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上的出色工作以及此配置问题的解决方案。我也面临同样的问题。