将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
相关产品推荐
相关产品推荐

