django 导入错误 - 没有名为 core.management 的模块
好的,我看到周围有很多这样的错误。我尝试了我所知道的所有方法,但还是没能解决这个问题。
我在一个开发服务器上工作,运行的是 Python 2.5 和 Django 1.3。Django 1.3 是在解压 tar.gz 下载包后,通过运行 python setup.py install 安装的。
一切都运作良好,我很少需要运行 manage.py
,但现在我想使用新的 staticfiles 应用程序,却遇到了问题。
python manage.py collectstatic
Traceback (most recent call last):
File "manage.py", line 2, in <module>
from django.core.management import execute_manager
ImportError: No module named core.management
好的,我发现我有 PATH
的问题。
根据 Django 的安装文档,我再次检查了我的 site-packages
目录。
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.5/site-packages
好的,让我们看看我有什么,运行 echo $PYTHON_PATH 发现是空的,所以我设置了它。
export PYTHON_PATH=/usr/lib/python2.5/site-packages/django
还是没有运气。让我们检查一下 sys.path 的内容。
>>> import sys
>>> print sys.path
['', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/PIL', '/usr/lib/python2.5/site-packages/django', '/var/lib/python-support/python2.5']
路径在那儿,我甚至创建了 /usr/lib/python2.5/site-packages/django.pth,并添加了内容。
cat /usr/lib/python2.5/site-packages/django.pth
/usr/lib/python2.5/site-packages/django/
有没有人知道这里发生了什么?
我在路径上发现了一个符号链接,它在干扰,但没有找到新的错误。
python manage.py collectstatic
Traceback (most recent call last):
File "manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 349, in execute
version=get_version(),
File "/usr/lib/python2.5/site-packages/django/__init__.py", line 12, in get_version
from django.utils.version import get_svn_revision
ImportError: No module named utils.version
我还尝试创建一个新项目,看看那里是否有问题,结果也遇到了相同的 utils.version 错误。
顺便提一下:来自 #django 的 Unode 帮助了我一点,在同一台机器上设置了 virtualenv,解决了错误,所以我仍然不确定这个实际安装有什么问题,但似乎问题不在 Django 项目中,而是在 Django/Python 的安装上。
32 个回答
如果你在一个虚拟环境中,必须先激活这个环境才能运行 ./manage.py '命令'
source path/to/your/virtualenv/bin/activate
如果你在 .bash_profile 或 .bashrc 文件中配置了 workon
workon yourvirtualenvname
*请不要编辑你的 manage.py 文件,这样可能会有效果,但不是正确的方法,未来可能会导致错误
如果你和我一样在虚拟环境中运行 Django,并且遇到了这个错误,先看看你的 manage.py
文件。第一行应该是定义用来运行这个脚本的 Python 可执行文件的路径。这个路径应该指向你虚拟环境中的 Python,但如果它显示的是像 /usr/bin/python 这样的路径,那就不对了,这样会使用全局的 Python 环境(这样会缺少一些包)。你只需要把这个路径改成你虚拟环境中 Python 的路径就可以了。
你也可以把第一行改成 #!/usr/bin/env python
。这样做的话,只要你先激活了虚拟环境,它就会使用正确的 Python 环境和解释器(我想你知道怎么激活虚拟环境)。
大家都知道,这是一个路径的问题。
我自己做的包和/etc/profile里设置的一个目录名字是一样的。不过,这些包其实放在了不同的地方,专门给网络服务器用。所以我把$PYTHONPATH里那些有问题的条目删掉了,这样就没问题了!
谢谢大家的帮助。