免责声明:我是python和django新手,但有Drupal编程经验。我使用的是Windows7(WindowsXP也有同样的问题)
在python 2.7和Django-1.3.1上,我成功地创建了一个默认项目
django-admin.py startproject djsite
现在,我需要“bootstrap”djsite.manage,如下所述(http://www.pyinstaller.org/wiki/Recipe/DjangoApplication),该文件名为bootstrap.py,位于djsite的父目录中:
import djsite.manage
djsite.manage.execute_manager(djsite.manage.settings,['manage.py', 'runserver'])
然而,只要编译器看到:
import djsite.manage
我明白了:
“错误:在包含“C:\ Python27\Lib\site packages\djsite\manage.pyc”的目录中找不到文件'settings.py'。看来你已经定制了一些东西。。。你必须运行django-admin.py,将设置模块传递给它。“而且,在这种情况下,我不知道如何遵循错误的建议。
但是,如果我改为在bootstrap.py中发出以下命令:
import os, sys
sys.path.append(os.path.abspath('djsite'))
import djsite.manage
djsite.manage.execute_manager(djsite.manage.settings,['manage.py', 'runserver'])
脚本工作正常,但它破坏了Pyinstaller(我已经在该软件的邮件列表(http://group s.google.com/group/Pyinstaller/browse-thread/thread/174a72e26c26a44c)中提出了这个问题)。即使我在path变量中添加到djsite的路径,也会得到相同的错误。
所以我的问题是:为什么导入manage.py模块会失败,我该如何继续?谢谢!
最佳答案
尝试将此添加到bootstrap.py以通知它您的设置文件所在的位置:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'djsite.settings'
这将假设djsite在您的pythonpath中。也就是说,如果它位于这里:
/path/to/my/djsite
,那么它应该在您的pythonpath中:/path/to/my
实际上,从一开始就这样做的最好方法是使用virtualenv,这将确保您的环境是正确的。如果我还记得bootstrap的话,我觉得这应该是你教程的一部分。如果您使用的是virtualenv,请确保记得
source bin/activate
如果不起作用,可以尝试更改runserver命令:
args = ['manage.py', 'runserver', '--settings=/path/to/my/djsite/settings.py']
djsite.manage.execute_manager(djsite.manage.settings, args)