【问题标题】:ImportError: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settingsImportError:无法导入设置“mysite.settings”(它在 sys.path 上吗?):没有名为 mysite.settings 的模块
【发布时间】:2014-06-04 08:38:11
【问题描述】:

编辑以尝试使用第一个答案进行故障排除。

现在我被 403 禁止。这就是我所拥有的:

<VirtualHost ip:80>
    ServerAdmin admin
    ServerName name
WSGIScriptAlias / /home/django/mysite/mysite/wsgi.py

<Directory /home/django/mysite/mysite>
<Files wsgi.py>
     Require all granted
</Files>
</Directory>
</VirtualHost>

我有一个用户创建了“django”/home/django,并且所有子目录都具有“django”的权限。应该是这样的,对吗?

我正在运行 django 1.6.2

/home/django 包含 mysite,'/home/django/mysite' 包含 manage.py。 /home/django/mysite/mysite/ 包含、init、urls 和 wsgi.py。

wsgi.py 包含:

import os
import sys
sys.path.insert(0,'/home/django/mysite')

os.environ["DJANGO_SETTINGS_MODULE"] =  "mysite.settings"

# NOTICE: the following may only work well in django version 1.5 1.6
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

我做错了什么?为什么我会被禁止? :( wsgi.py 是否需要是用户/组 apache?

如果重要,服务器版本:Apache/2.2.15

它可能与 mod_userdir.c 有什么关系吗?

【问题讨论】:

  • 不推荐使用对 mod_pyhton 的支持。除非您使用的是旧版本的 django,否则 Django.core.handlers.modpython 不应该存在。我建议你切换回 mod wsgi,让我们帮你配置
  • 嘿,你能看看更新的帖子吗?,使用 mod_wsgi,并做了第一个答案的建议。

标签: python django apache python-2.7


【解决方案1】:

我通常用mod_wsgi写在wsgi.py

*.conf 中的配置(Apache 版本 >= 2.4):

<VirtualHost *:80>
        ServerName example.com
        ServerAdmin example@example.com

        Alias /media/ /home/tu/blog/media/
        Alias /static/ /home/tu/blog/collected_static/

        <Directory /home/tu/blog/media>
                Require all granted
        </Directory>

        <Directory /home/tu/blog/collected_static>
                Require all granted
        </Directory>

        WSGIScriptAlias / /home/tu/blog/blog/wsgi.py

        <Directory /home/tu/blog/blog>
        <Files wsgi.py>
                Require all granted
        </Files>
        </Directory>
</VirtualHost>

如果您使用 Apache 2.2,请使用

Order allow,deny
Allow from all

而不是

Require all granted

wsgi.py(取决于你的 django 版本)

import os
import sys
sys.path.insert(0,'/path/to/project/')

os.environ["DJANGO_SETTINGS_MODULE"] =  "project.settings"

# NOTICE: the following may only work well in django version 1.5 1.6
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

即把你的django项目当成一个python包,sys.path用来告诉python项目在哪里。

【讨论】:

  • 感谢您的回复。已经为此苦苦挣扎了。现在我收到 403 禁止错误。我用我所有的东西更新了主帖,你能看一下吗?非常感谢!
  • 如答案所述,这是 Apache 2.4 的解决方案。对于 Apache 2.2,使用 Order allow,deny Allow from all 而不是 Require all granted
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 2012-08-09
  • 1970-01-01
  • 2021-08-28
  • 2011-06-12
  • 2013-09-06
  • 1970-01-01
相关资源
最近更新 更多