【发布时间】:2011-11-14 02:50:51
【问题描述】:
我已通过mod_wsgi 将 Django 部署到 Apache。从 Apache 托管时,Django 运行良好。但是,我正在尝试通过manage.py 进行一些维护,但是当我尝试运行它时,我得到了错误:
错误:无法导入设置“myproject.settings”(是否在 sys.path 上?):没有名为 settings 的模块
user@localhost:~$ cd /usr/local/myproject
user@localhost:/usr/local/myproject$ ls
drwxr-xr-x 2 apache apache 4096 2011-09-07 19:38 apache
-rw-r--r-- 1 apache apache 0 2011-05-25 14:52 __init__.py
-rw-r--r-- 1 apache apache 813 2011-09-09 16:56 manage.py
drwxr-xr-x 6 apache apache 4096 2011-09-09 16:43 myapp
-rw-r--r-- 1 apache apache 4992 2011-09-07 19:31 settings.py
drwxr-xr-x 4 apache apache 4096 2011-09-08 20:32 templates
-rw-r--r-- 1 apache apache 1210 2011-09-08 14:49 urls.py
Django 似乎忽略了 DJANGO_SETTINGS_MODULE 环境变量。
user@localhost:~$ cd /usr/local/myproject
user@localhost:/usr/local/myproject$ export DJANGO_SETTINGS_MODULE=settings
user@localhost:/usr/local/myproject$ python manage.py shell
Error: Could not import settings 'myproject.settings' (Is it on sys.path?): No module named settings
user@localhost:/usr/local/myproject$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import settings
>>>
为了确认我没有发疯,我注释掉了 manage.py 中除了 import settings 行之外的所有内容,并且它运行正确。
我也试过直接在manage.py的顶部设置os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'和sys.path.append('/usr/local/myproject'),没有用。
这里发生了什么?为什么 Django 使用错误的设置模块名称?这让我发疯了。
【问题讨论】:
-
在尝试修改 sys.path 之前,您是否以任何其他方式修改了 manage.py?
-
你能发布你的 manage.py 文件吗?