Django教程中命令行导入模型触发ImportError的原因排查
解决Django模型相对导入错误的方案
错误原因
直接在polls目录下启动Python解释器时,当前目录未被识别为Python包体系中的子模块,相对导入语法from .models import ...无法找到对应的父包上下文,因此抛出ImportError。
可行解决方案
方法1:使用Django官方推荐的shell(最简便)
回到项目根目录(包含manage.py的目录),执行以下命令启动Django专属shell:
python manage.py shell
进入shell后,即可正常执行导入:
from polls.models import Question # 或者使用相对导入(此时polls已被识别为app包) from .models import Question
方法2:手动添加项目路径到Python环境
如果坚持在polls目录下启动Python,先将项目根目录加入sys.path,再使用绝对导入:
import sys # 假设项目根目录是polls的上级目录,根据实际路径调整 sys.path.append('../') from polls.models import Question
方法3:从项目根目录启动Python
直接在项目根目录执行python,然后用绝对导入:
from polls.models import Question
内容的提问来源于stack exchange,提问作者jjk
相关产品推荐
相关产品推荐

