虚拟环境已装django-cms,但Django无法找到该包的问题求助
解决Django无法识别已安装的django-cms模块问题
我之前维护遗留Django项目时也碰到过一模一样的情况,这种虚拟环境明明装了包但Django找不到的问题,大概率是Python解释器不一致或者虚拟环境配置的小问题,咱们一步步来排查解决:
1. 确认Python解释器和pip是同一份
激活虚拟环境后,先检查两个关键路径是否一致:
- 运行
which python,得到的路径应该指向你虚拟环境的bin目录,比如/your/venv/path/bin/python - 再运行
which pip,路径必须和上面的python路径属于同一个虚拟环境
如果两者路径不一样,说明你用的pip不是虚拟环境里的,这时候要指定虚拟环境的pip重新安装:
/your/venv/path/bin/pip install django-cms==3.3.0
2. 验证虚拟环境的Python能直接导入cms
直接打开虚拟环境的Python交互模式:
python
然后输入 import cms,如果这里也报错,说明虚拟环境里的包确实没装对,直接跳到第4步重装;如果能成功导入,那问题出在manage.py的运行方式上。
3. 检查manage.py的解释器指定
打开manage.py看第一行的shebang注释:
#!/usr/bin/env python
如果这里写的是系统Python的绝对路径(比如#!/usr/bin/python),哪怕激活了虚拟环境,运行./manage.py shell时还是会用系统Python,自然找不到虚拟环境里的包。
解决办法:
- 把shebang改成
#!/usr/bin/env python,让它优先用当前环境的Python - 或者直接用虚拟环境的Python路径来运行命令:
/your/venv/path/bin/python manage.py shell
4. 重装django-cms及依赖
如果上面的排查都没问题,可能是安装的包损坏了,彻底卸载后重装:
# 先卸载cms及其依赖 pip uninstall -y django-cms menus treebeard sekizai djangocms-admin-style # 重新安装指定版本 pip install django-cms==3.3.0
也可以直接去虚拟环境的site-packages目录(比如/your/venv/path/lib/python2.7/site-packages/,因为Django1.8对应Python2.7)确认有没有cms文件夹,确保安装成功。
5. 确认虚拟环境激活状态
最后再确认下虚拟环境是否真的正确激活:
- 运行
echo $VIRTUAL_ENV,输出应该是你的虚拟环境路径 - 运行
echo $PATH,确保虚拟环境的bin目录在路径最前面,这样系统才会优先用虚拟环境里的工具
内容的提问来源于stack exchange,提问作者nttaylor
相关产品推荐
相关产品推荐

