Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django站点中的ImportError,mod_wsgi处于守护程序模式_Python_Django_Apache_Mod Wsgi - Fatal编程技术网

Python Django站点中的ImportError,mod_wsgi处于守护程序模式

Python Django站点中的ImportError,mod_wsgi处于守护程序模式,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我正在试验运行在同一VirtualHost上配置的两个wsgi应用程序。其中一个应用程序myapp是指定的标准hello world代码。这是绝对好的。另一个应用程序,uiapp是Django网站。它因导入错误而失败 我读入了python path的值被附加到sys.path,因此这就是我在WSGIDaemonProcess中为uiapp指定的内容 我不知道问题出在Python代码还是Apache配置上 这是我的virtualhost配置: [ . . . ] # proces

我正在试验运行在同一
VirtualHost
上配置的两个wsgi应用程序。其中一个应用程序
myapp
是指定的标准hello world代码。这是绝对好的。另一个应用程序,
uiapp
是Django网站。它因导入错误而失败

我读入了
python path
的值被附加到
sys.path
,因此这就是我在
WSGIDaemonProcess
中为
uiapp
指定的内容

我不知道问题出在Python代码还是Apache配置上

这是我的virtualhost配置:

    [ . . . ]

    # processGroups
    WSGIProcessGroup uiapp
    WSGIProcessGroup myapp

    # configurations for django sites
    WSGIScriptAlias /uiapp "/some/path/ui_dir/site_prod/wsgi.py"
    WSGIScriptAlias /myapp "/some/other/path/myapp.wsgi"

    # daemons
    WSGIDaemonProcess uiapp processes=2 threads=25 display-name=site_prod_wsgi python-path=/some/path/ui_dir
    WSGIDaemonProcess myapp processes=2 threads=25 display-name=helloworld_wsgi

    # doc root for /uiapp
    <Directory "/some/path/ui_dir/site_prod">
        Order allow,deny
        Allow from all
    </Directory>

    # doc root for /myapp
    <Directory "/some/other/path">
        Order allow,deny
        Allow from all
    </Directory>

    [ . . . ]
这是
/some/path/ui\u dir/site\u prod/wsgi.py

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_prod.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

请帮我找出我做错了什么。

如果您查看django docs 1.3版而不是1.4版的早期版本,本节可以帮助您解决问题。我在配置virtualhosts时遇到了与您相同的问题。因此,不要在virtualhost配置中指定
python path=/some/path/ui\u dir
。您可以在
/some/path/ui\u dir/site\u prod/wsgi.py
中将下面的行添加到该文件中。在导入和运行django之前,将这些行放在文件顶部的行之前

代码

import sys
path = '/some/path/ui_dir'
if path not in sys.path:
    sys.path.append(path)

如果您查看django docs 1.3版而不是1.4版的早期版本,本节将有助于解决您的问题。我在配置virtualhosts时遇到了与您相同的问题。因此,不要在virtualhost配置中指定
python path=/some/path/ui\u dir
。您可以在
/some/path/ui\u dir/site\u prod/wsgi.py
中将下面的行添加到该文件中。在导入和运行django之前,将这些行放在文件顶部的行之前

代码

import sys
path = '/some/path/ui_dir'
if path not in sys.path:
    sys.path.append(path)

…并确保已在wsgi.py中设置了DJANGO_SETTINGS_模块

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.could.be.somewhere.else'

…并确保已在wsgi.py中设置了DJANGO_SETTINGS_模块

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.could.be.somewhere.else'
试试这个:

vhost:

<Virtualhost project.dev>
    DocumentRoot "/full/path/to/project/root/"

    WSGIScriptAlias / /full/path/to/wsgi/file/wsgi.py
</Virtualhost>
试试这个:

vhost:

<Virtualhost project.dev>
    DocumentRoot "/full/path/to/project/root/"

    WSGIScriptAlias / /full/path/to/wsgi/file/wsgi.py
</Virtualhost>

这样的一行中不能有两个WSGIProcessGroup指令。只使用最后一个。因此,实际上您将两个应用程序发送到同一个守护进程组,而不是不同的守护进程组。完成此操作后,如果将它们放在同一个过程中,您将遇到setdefault()问题,如中所述:


将WSGIProcessGroup指令移动到与相应WSGI脚本文件位置相关的目录块内。

这样一行中不能有两个WSGIProcessGroup指令。只使用最后一个。因此,实际上您将两个应用程序发送到同一个守护进程组,而不是不同的守护进程组。完成此操作后,如果将它们放在同一个过程中,您将遇到setdefault()问题,如中所述:


将WSGIProcessGroup指令移动到与相应WSGI脚本文件位置相关的目录块中。

谢谢Graham。这解决了我的问题。你的博客文章解释得非常清楚。感谢Graham在mod_wsgi上的出色工作以及此配置问题的解决方案。我也面临同样的问题。谢谢格雷厄姆。这解决了我的问题。你的博客文章解释得非常清楚。感谢Graham在mod_wsgi上的出色工作以及此配置问题的解决方案。我也面临同样的问题。