我在全球范围内安装了pip
,virtualenv
和django
。使用py3,默认是使用~./bash_profile
中的别名行设置的 - 所以py2与Mac打包在一起。
在新的virtualenv
中,已激活,但当我尝试对django
执行任何操作时会出现以下错误:
$ python manage.py migrate
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named 'django'
如果我使用sudo(即sudo python manage.py migrate
)命令运行。
我知道问题可能是我安装pip
的方式,但无论如何要解决此问题而不重新安装所有内容?
答案 0 :(得分:0)
而不是python manage.py migrate
,只需告诉python
即可。它将启动一个交互式python解释器。告诉它以下内容:
import sys
sys.executable
sys.path
sys.executable
是Python可执行文件的完整路径名。它应该是你的virtualenv内的东西。 sys.path
是Python在尝试import
时搜索模块的目录列表。这应该包括你的virtualenv。
现在退出Python并告诉它sudo python
。输入相同的指令。有什么区别?
这应该会提示你做错了什么,你应该能够进一步调试它。
您可能还会发现我的文章virtualenv demystified很有用。
答案 1 :(得分:0)
这可能由于几个不同的原因(从最基本到更复杂)发生:
pip list
进行检查。大部分时间pip install django
都会解决。不要sudo
这个,或者你必须sudo
一切。另外:仔细检查django版本匹配python版本; pip install --upgrade django
获取最新版本。 source your_path/venv/bin/activate
virtualenv -p /usr/bin/python2.7 env
。alias python=python2.7
)进行修复,但请确保仅在用于项目的实例上使用,而不是在本地comp上使用。本地comp不会工作,因为sudo是默认运行的默认python版本。 manage.py
默认路径不正确。这取决于您的设置以及存储python依赖项的位置。如果这是您的问题,请用#!/usr/bin/env python
替换shebang。小心re:python版本在这里,所以如果OS默认与使用不同,只需在python末尾添加数字(例如:python3
)。 $PYTHONPATH
中与sudo PATH不匹配的位置。管道/更新配置文件以修复。