Django的新手部署问题 - 导入错误:无法导入设置“设置”(Django newbie depl

2019-07-31 05:43发布

该应用程序运行正常使用Django内部服务器但是当我使用Apache + mod_python的,我得到下面的错误


  File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 75, in __init__
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)

ImportError: Could not import settings 'settings' (Is it on sys.path? Does it have syntax errors?): No module named settings

这里是需要的信息

1)项目目录:/根/ djangoprojects / mysite的

2)/根的目录列表/ djangoprojects / mysite的

ls -ltr
total 28
-rw-r--r-- 1 root root  546 Aug  1 08:34 manage.py
-rw-r--r-- 1 root root    0 Aug  1 08:34 __init__.py
-rw-r--r-- 1 root root  136 Aug  1 08:35 __init__.pyc
-rw-r--r-- 1 root root 2773 Aug  1 08:39 settings.py
-rw-r--r-- 1 root root 1660 Aug  1 08:53 settings.pyc
drwxr-xr-x 2 root root 4096 Aug  1 09:04 polls
-rw-r--r-- 1 root root  581 Aug  1 10:06 urls.py
-rw-r--r-- 1 root root  314 Aug  1 10:07 urls.pyc

3)应用程序目录:/根/ djangoprojects / mysite的/轮询

4)/根/ djangoprojects / mysite的/轮询的目录列表

ls -ltr
total 20
-rw-r--r-- 1 root root 514 Aug  1 08:53 tests.py
-rw-r--r-- 1 root root  57 Aug  1 08:53 models.py
-rw-r--r-- 1 root root   0 Aug  1 08:53 __init__.py
-rw-r--r-- 1 root root 128 Aug  1 09:02 views.py
-rw-r--r-- 1 root root 375 Aug  1 09:04 views.pyc
-rw-r--r-- 1 root root 132 Aug  1 09:04 __init__.pyc

5)在任何地方以Python解释器的文件系统中运行的进口Django的正常工作

6)的httpd.conf的内容

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE settings
    PythonOption django.root /mysite
    PythonPath "['/root/djangoprojects/', '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls', '/var/www'] + sys.path"
    PythonDebug On
</Location>

7)PYTHONPATH变量被设置为

echo $PYTHONPATH
/root/djangoprojects/mysite

8)DJANGO_SETTINGS_MODULE被设置为

echo $DJANGO_SETTINGS_MODULE
mysite.settings

9)的sys.path的内容是

import sys
>>> sys.path
['', '/root/djangoprojects/mysite', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages']

如何添加设置位置sys.path中,使得它在会话持续性?

我看过许许多多的无后与有同样的问题它的人,我已经尝试了很多完全击败我,什么我需要做的。

寻找一些帮助。

在此先感谢ANKUR古普塔

Answer 1:

Apache配置应该是这样的:

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonPath "['/root/djangoprojects/', '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls', '/var/www'] + sys.path"
    PythonDebug On
</Location>

需要注意的是,唯一的区别就是“mysite.settings”。 不要忘记,一旦配置发生了变化(apache2ctl重新启动)重新启动Apache。 见http://docs.djangoproject.com/en/dev/howto/deployment/modpython/获取更多信息。



Answer 2:

尝试更改为以下几点:

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonPath "['/root/djangoprojects', '/var/www'] + sys.path"
    PythonDebug On
</Location>

不使用“/”在PYTHONPATH条目的结束(这可能是一个问题,我有,至少在Windows上的问题)。

该条目“/根/ djangoprojects / mysite的”,“/根/ djangoprojects / mysite的/民意调查”不是必要的,因为你会被完整的名称来指你的模块(即mysite.sttings意味着mysite的包,里面的设置模块,是访问它在PYTHONPATH /根/ djangoprojects)的正确方法。



文章来源: Django newbie deployment question - ImportError: Could not import settings 'settings'