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

使用poetry安装Django后激活的虚拟环境提示No module named django

问题成因

该问题核心是命令调用的Python解释器与Django实际安装的虚拟环境解释器不匹配:

  • 虚拟环境bin目录下的django-admin可执行文件执行时,会调用文件头部shebang行指定的Python解释器,若该解释器不属于当前虚拟环境,就无法读取虚拟环境内安装的Django依赖
  • 另一种常见场景是虚拟环境激活未生效,shell的PATH变量中系统Python路径优先级高于虚拟环境Python路径,实际调用的是系统Python,自然找不到虚拟环境内安装的包
解决方案

方案1(最稳妥,无需修改配置)

直接使用poetry run前缀执行项目内的所有命令,poetry会自动匹配对应虚拟环境,无需手动激活环境:

# 执行django-admin
poetry run django-admin
# 其他命令同理,例如启动Django服务
poetry run python manage.py runserver

方案2(适配手动激活虚拟环境的使用习惯)

  1. 激活虚拟环境后先执行以下命令,确认Python路径匹配:
which python
# 预期输出应为 /Users/cjones/Library/Caches/pypoetry/virtualenvs/poetry-demo-Jq168aNm-py3.8/bin/python
  1. 若输出路径不匹配,检查shell配置文件(~/.zshrc/~/.bashrc等)是否存在强制修改PATH优先级的规则,调整虚拟环境bin目录的优先级到最高,也可以直接用绝对路径激活虚拟环境:
source /Users/cjones/Library/Caches/pypoetry/virtualenvs/poetry-demo-Jq168aNm-py3.8/bin/activate
  1. 确认Python路径正确后,也可以直接用python -m django替代django-admin命令,功能完全一致:
python -m django --version

方案3(重置异常虚拟环境)

如果以上操作都无法解决,删除现有异常虚拟环境后重新生成即可:

# 删除当前项目关联的虚拟环境
poetry env remove python3.8
# 重新安装所有依赖
poetry install
# 验证功能
poetry run django-admin --version

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:30:01