在 debian 6.0.6 (squeeze) 上使用 pip 安装 Django 1.4.3 后django-admin.py startproject
会创建损坏的项目。
$ django-admin.py startproject testproject
$ cd testproject
$ python manage.py shell
Error: Could not import settings 'settings' (Is it on sys.path?): No module named settings
似乎生成的项目采用平面结构(如 1.3 中),而它的格式类似于 1.4 项目(带有 testproject 项目应用程序目录,其中 settings.py 实际存在)。如果我做:
$ ln -s testproject/settings.py settings.py
python manage.py shell
工作得很好,但我担心这个项目会以更深刻的方式被打破。
我已经尝试卸载并重新安装 django,并且我已经删除了我可以在系统上找到的所有其他版本的 django。
在python中直接导入django会得到以下结果:
>>> django.get_version()
'1.4.3'
什么可能导致这种行为,我将如何修复我的 Django 安装?
这就是我的 manage.py 中的内容:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
django-admin.py 的位置:
$ which django-admin.py
/usr/local/bin/django-admin.py
我注意到这个 django-admin.py 与/usr/local/lib/python2.6/dist-packages/django/bin/
. 在/usr/local/bin/
用那个版本替换一个之后,问题仍然存在。
在manage.py
将行更改os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings")
为os.environ["DJANGO_SETTINGS_MODULE"] = "testproject.settings"
. 这样做之后,我可以生成一个没有错误的 shell。
以相同的方式更改从中复制 manage.py 的模板(/usr/local/lib/python2.6/dist-packages/django/conf/project_template/manage.py
在我的情况下)使 django-admin.py 生成未损坏的项目。