django 导入错误 - 没有名为 core.management 的模块

206 投票
32 回答
380421 浏览
提问于 2025-04-16 17:54

好的,我看到周围有很多这样的错误。我尝试了我所知道的所有方法,但还是没能解决这个问题。

我在一个开发服务器上工作,运行的是 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 个回答

42

如果你在一个虚拟环境中,必须先激活这个环境才能运行 ./manage.py '命令'

source path/to/your/virtualenv/bin/activate

如果你在 .bash_profile 或 .bashrc 文件中配置了 workon

workon yourvirtualenvname

*请不要编辑你的 manage.py 文件,这样可能会有效果,但不是正确的方法,未来可能会导致错误

176

如果你和我一样在虚拟环境中运行 Django,并且遇到了这个错误,先看看你的 manage.py 文件。第一行应该是定义用来运行这个脚本的 Python 可执行文件的路径。这个路径应该指向你虚拟环境中的 Python,但如果它显示的是像 /usr/bin/python 这样的路径,那就不对了,这样会使用全局的 Python 环境(这样会缺少一些包)。你只需要把这个路径改成你虚拟环境中 Python 的路径就可以了。

你也可以把第一行改成 #!/usr/bin/env python。这样做的话,只要你先激活了虚拟环境,它就会使用正确的 Python 环境和解释器(我想你知道怎么激活虚拟环境)。

13

大家都知道,这是一个路径的问题。

我自己做的包和/etc/profile里设置的一个目录名字是一样的。不过,这些包其实放在了不同的地方,专门给网络服务器用。所以我把$PYTHONPATH里那些有问题的条目删掉了,这样就没问题了!

谢谢大家的帮助。

撰写回答