Windows10虚拟环境下运行Django项目报无法导入Django的ImportError
Windows 10 虚拟环境下Django导入失败排查方案
- 优先校验虚拟环境激活状态
在已输入激活命令的终端中执行where python,如果返回的可执行文件路径不包含你创建的虚拟环境目录下的Scripts子文件夹路径,说明虚拟环境并未真正激活——Windows终端存在显示(venv)前缀但环境变量未生效的常见bug,这种状态下执行任何Python命令调用的都是系统全局解释器,自然找不到虚拟环境内安装的Django。 - 核对Django的实际安装位置
确认虚拟环境真的激活后,在终端执行pip list,检查返回的包列表中是否存在Django条目。很多用户会提前在系统全局Python环境安装Django,创建虚拟环境后没有重新在虚拟环境内安装项目依赖,这种场景下就算虚拟环境激活成功,也读不到全局环境的Django包,直接在当前激活的虚拟环境终端执行pip install django即可解决。 - 取消手动配置的全局PYTHONPATH
虚拟环境的设计机制是自动隔离依赖加载路径,手动把Python包路径添加到系统全局PYTHONPATH,反而会打乱虚拟环境的路径优先级,导致解释器优先加载错误路径下的包。建议把之前手动添加的PYTHONPATH配置全部删除,无需额外配置路径,虚拟环境本身的路径规则就能正确定位已安装的Django。 - 匹配Windows环境下的正确启动命令
Windows系统激活虚拟环境后,默认的Python可执行文件启动命令为python,而非Linux系统常用的python3。如果敲python3 manage.py runserver触发报错,大概率是这个命令实际调用了系统全局的Python解释器,和当前激活的虚拟环境不属于同一进程,自然无法导入Django,可以直接替换成python manage.py runserver启动项目。 - 兜底排查方法
如果以上步骤全部核对完成仍有导入报错,可以在激活虚拟环境的终端执行python -c "import sys; print(sys.path)",查看返回的搜索路径列表,确认虚拟环境对应的Lib/site-packages目录是否在列表内,如果路径缺失,直接删除现有虚拟环境重新创建即可。
内容的提问来源于stack exchange,提问作者Marcos Alejandro Pérez
相关产品推荐
相关产品推荐

