相关疑难解决方法(0)

Apache/mod_wsgi中的Django部署问题.ImportError:无法导入设置'site.settings'

当我执行时

django-admin.py startproject site
Run Code Online (Sandbox Code Playgroud)

有用.
但如果我只是复制网站文件夹它不起作用.
为什么?

<VirtualHost *:80>
ServerName django.stanislavfeldman.com

# Django settings
WSGIScriptAlias / /var/www/django/wsgi_handler.py
WSGIDaemonProcess django.stanislavfeldman.com maximum-requests=200 stack-size=524288

ErrorLog /var/www/django/error.log
LogLevel warn
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

wsgi_handler.py:

import os, sys

sys.path.append('/var/www/django')

os.environ['DJANGO_SETTINGS_MODULE'] = 'site.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

python django

7
推荐指数
2
解决办法
9767
查看次数

Django WGSI路径

我在使用django设置wgsi时遇​​到了问题.我正在关注这个http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/.然而,我仍然真的很困惑在哪里放置.wsgi文件,如果我需要设置sys.path.我已经在web root的外部和内部直接尝试了它,我无法按预期工作.

# /home/ben/public_html/django_test/testproject/apache/django.wsgi:

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

Reliveant apache conf:

DocumentRoot "/home/ben/public_html/django_test/testproject/"
WSGIScriptAlias / "/home/ben/public_html/django_test/testproject/apache/django.wsgi"
Run Code Online (Sandbox Code Playgroud)

Apache Logs Error(标准apache 500页):

ImportError: Could not import settings 'testproject.settings' (Is it on sys.path? ...
Run Code Online (Sandbox Code Playgroud)

我可以通过使用这个来让django至少抛出它自己的错误:

import os
import sys

path = '/home/ben/public_html/django_test/testproject'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

这导致了这个django错误页面:

ImportError at /admin/
No module named testproject.urls
Run Code Online (Sandbox Code Playgroud)

python apache django wsgi apache2

5
推荐指数
1
解决办法
3747
查看次数

为什么Django name 2文件夹是项目名称?

因此,在我的Django结构(默认设置)中,我的文件夹结构如下所示:

/mysite
    /mysite
        __init.py
        settings.py
        urls.py
        wsgi.py
    /mymodel
        ...    
    /myapp
        ...
    manage.py
Run Code Online (Sandbox Code Playgroud)

因此,要访问设置文件,默认情况下,wsgi.py被设置为mysite / settings.py。但是,Django将mysite名称分配给2个文件夹,一个在另一个文件夹内。因此,它看起来在最高一级,没有找到它,并引发了错误。我在系统路径中使用父mysite的目录尝试了mysite / mysite / settings.py,但这给出了相同的错误。

ImportError: Could not import settings 'mysite.mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named mysite.mysite.settings
Run Code Online (Sandbox Code Playgroud)

要获取有关此错误的更多信息,请检查如何停止获取ImportError:将django与wsgi一起使用时,无法导入设置'mofin.settings'吗?

我只是想知道为什么Django会让默认结构变得如此困难,并且重命名是最好的出路吗?看来这可能是草率的,并且容易出错。不知道如果我确实开始重命名,我必须在几个地方更改名称。似乎很危险。

python linux django mod-wsgi wsgi

5
推荐指数
1
解决办法
768
查看次数

标签 统计

django ×3

python ×3

wsgi ×2

apache ×1

apache2 ×1

linux ×1

mod-wsgi ×1