You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Django模型导入Python文件时遭遇“No module named 'PaymentForParking'”错误求助

解决Django导入模型时的ModuleNotFoundError: No module named 'PaymentForParking'问题

你这是在项目子目录的脚本里导入Django模型时踩了路径配置的坑,我帮你一步步梳理修复:

1. 先明确你的项目结构

根据你给出的路径,推测你的项目目录应该是这样的:

/mnt/c/WEB/codepython/PaymentForParking/
├── PaymentForParking/       # 核心配置目录,包含settings.py
│   ├── settings.py
│   ├── __init__.py
│   └── ...
├── index/
│   └── telegram/
│       └── 你的脚本文件.py   # 你当前运行的文件
└── manage.py

要让Django识别到PaymentForParking.settings,必须把包含PaymentForParking子目录的项目根目录(也就是上面最外层的PaymentForParking目录)添加到Python的搜索路径里。

2. 修正路径配置代码

你之前的project_path计算错了,取到的是index目录而非项目根目录,替换成下面的代码:

import os
import sys
import django

# 获取当前脚本的绝对路径,动态计算更可靠
current_script = os.path.abspath(__file__)
# 向上跳两级目录,从telegram回到项目根目录
project_root = os.path.dirname(os.path.dirname(current_script))
# 把项目根目录加入Python搜索路径
sys.path.append(project_root)
# 指定Django配置模块
os.environ["DJANGO_SETTINGS_MODULE"] = "PaymentForParking.settings"
# 初始化Django
django.setup()

# 现在可以正常导入模型了
# from your_app.models import YourModel

为什么这么改?

  • 用__file__动态获取脚本路径,比硬编码路径更灵活,避免手动写错路径。
  • 两次调用os.path.dirname是因为你的脚本在index/telegram下,向上跳两级正好到达项目根目录。

3. 额外排查点

如果还是报错,可以检查这几个地方:

  • 确认PaymentForParking核心目录下有__init__.py文件(空文件也行,Python需要它识别为合法模块)。
  • 检查settings.py的路径和拼写是否正确(Linux系统路径区分大小写,别写错字母)。
  • 如果用了虚拟环境,确保运行脚本时激活了对应的环境,避免依赖或Django版本不匹配。

内容的提问来源于stack exchange,提问作者Ilya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:47:33