我正在将我的 django 应用程序部署到CentOS 5.5服务器上,使用django-1.1.4 over python-2.6.5。
我在myapp/settings/
文件夹中有多个设置文件。
我想运行同步数据库;这就是我所做的(使用myapp
内部myproject
文件夹):
$> cd /var/www/apps/myproject
$> export PYTHONPATH=/var/www/apps/myproject
$> export DJANGO_SETTINGS_MODULE=myapp.settings.my_serverconfig
$> python26 myapp/manage.py syncdb
Django 然后发出这样的错误:
Error: Can't find the file 'settings.py' in the directory containing 'myapp/manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)
Traceback (most recent call last):
File "emon/manage.py", line 17, in <module>
execute_manager(settings)
File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 360, in execute_manager
setup_environ(settings_mod)
File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 343, in setup_environ
project_module = import_module(project_name)
File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
ImportError: No module named my_serverconfig
在myapp.wsgi
文件中,os.path
附加了myproject
路径,并且os.environ['DJANGO_SETTINGS_MODULE']
也设置了。Apache(通过 mod_wsgi)可以在没有此类错误的情况下启动应用程序。
最后,这可以在 Windows 下运行,我在其中运行python-2.6.6和django-1.1.1。
$> d:
$> cd d:\Code\myproject
$> export PYTHONPATH=d:\Code\myproject
$> export DJANGO_SETTINGS_MODULE=myapp.settings.dev_settings
$> python.exe myapp/manage.py syncdb
我知道版本不一样,但我不确定细微的差异是否会导致我的所有痛苦。此外,我似乎没有为 Windows 找到完全相同的 python 版本。
有什么想法吗?非常感谢您的阅读。
O。
编辑: 添加manage.py
内容
#!/usr/bin/env python
from django.core.management import execute_manager
import os
if __name__ == "__main__":
settings = None
try:
if os.environ.has_key('LOCAL_SERVER_SETTINGS'):
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings.%s' % os.environ['LOCAL_SERVER_SETTINGS']
if os.environ.has_key('DJANGO_SETTINGS_MODULE'):
settings = __import__(os.environ['DJANGO_SETTINGS_MODULE'])
if settings is None:
import settings
execute_manager(settings)
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
import traceback
traceback.print_exc()
sys.exit(1)
myapp
编辑:更多关于包中发生的事情
我从myapp.__init__
模块中修补了一些 django 函数/类。我在想import django
这个模块中的部分导致了循环引用。该代码在我加载 myapp.settings.[any_config] 时执行,并且可能导致崩溃。但是,为什么 WSGI 加载了正确的设置模块而没有错误,并且它在 Windows 上也能正常工作?更多:注释掉上述代码部分后, ImportError 仍然存在。