首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mod_wsgi无法加载django.core.handlers.wsgi

Mod_wsgi无法加载django.core.handlers.wsgi
EN

Stack Overflow用户
提问于 2013-12-26 23:02:25
回答 3查看 4.7K关注 0票数 4

好吧,经过5-6个小时的努力,我放弃了。我搜索过网络,尝试了所有建议的解决方案,但是没有什么能解决我的问题。

目标:在我的Ubuntu12.04VPS上设置了Django。

问题: /etc/log/apache2/error.log中的 Exception occurred processing WSGI script [...] ImportError: No module named django.core.handlers.wsgi

解决方案尝试过: 1)将site-packages目录添加到Djangos的wsgi.py文件中的sys路径中,2)重新安装mod_wsgi,3)确保mod_wsgi的编译版本与Django安装的版本相同,4)站点-packages目录的chmod 777。

环境:Ubuntu12.04VPS,Django安装在virtualenv中,PythonVersion2.7.3,DjangVersion1.6.1,mod_wsgi构建于wsgi-3.4.tar.gz

完全错误消息:

代码语言:javascript
复制
mod_wsgi (pid=23691): Exception occurred processing WSGI script '/var/www/mySite/djangoSite/djangoSite/wsgi.py'.
Traceback (most recent call last):
   File "/var/www/mySite/djangoSite/djangoSite/wsgi.py", line 7, in <module>
     import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi
mod_wsgi (pid=23691): Target WSGI script '/var/www/mySite/djangoSite/djangoSite/wsgi.py' cannot be loaded as Python module.

mod_wsgi (pid=23691): Exception occurred processing WSGI script '/var/www/mySite/djangoSite/djangoSite/wsgi.py'.
Traceback (most recent call last):
   File "/var/www/mySite/djangoSite/djangoSite/wsgi.py", line 7, in <module>
     import django.core.handlers.wsgi
ImportError: No module named django.core.handlers.wsgi

来自网站的Conf文件-可获得:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerAdmin admin@mysite.com
    ServerName mysite.com

    DocumentRoot /var/www/mysite.com/djangoSite

    WSGIDaemonProcess djangoSite python-path=/var/www/mysite.com/djangoSite:~/Envs/myEnv/lib/python2.7/site-packages
    WSGIProcessGroup djangoSite
    WSGIScriptAlias / /var/www/mysite.com/djangoSite/djangoSite/wsgi.py

    Alias /static/ /var/www/mysite.com/djangoSite/static/

    <Directory /var/www/mysite.com/djangoSite/static>
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /var/www/mysite.com/djangoSite/djangoSite>
        <Files wsgi.py>
            Order deny,allow
            Allow from all
        </Files>
    </Directory>
</VirtualHost>

wsgi.py:

代码语言:javascript
复制
import os
import sys

sys.path.append('/var/www/mysite.com/djangoSite/')
sys.path.append('/var/www/mysite.com/djangoSite/djangoSite/')

activate_this = '/root/Envs/myenv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

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

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

站点结构

代码语言:javascript
复制
/var/www/
-- mysite.com
  -- djangoSite
    -- manage.py
    -- djangoSite
      -- settings.py, wsgi.py etc.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-26 23:59:25

在您的wsgi.py中,尝试添加以下内容以激活虚拟env:

代码语言:javascript
复制
import os
import sys

sys.path.append('/Path_To/Virtual_Env/Project_Dir/')

#This is important if multiple apps are running (instead of setdefault)
os.environ["DJANGO_SETTINGS_MODULE"] = "app_name.settings"

activate_this = '/Path_To/Virtual_Env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

在您的apache配置中,您主要只需要(不需要Deamon进程):

代码语言:javascript
复制
WSGIScriptAlias / /var/www/mysite.com/djangoSite/djangoSite/wsgi.py
Alias /static/ /var/www/mysite.com/djangoSite/static/

参见创建虚拟主机部分中的此链接

票数 2
EN

Stack Overflow用户

发布于 2013-12-26 23:20:20

确保在Apache2配置文件中使用绝对路径。我想您已经能够运行python manage.py shell来获得一个工作的Django shell了吗?我将处理Apache2配置文件;我相信您的问题就在这里。

票数 0
EN

Stack Overflow用户

发布于 2013-12-26 23:55:42

代码语言:javascript
复制
~/Envs/myEnv/lib/python2.7/site-packages

我认为这就是您的问题所在:如果~被扩展到www数据用户的家中,那么它就是扩展的。您可以通过这样的操作来验证这一点:

代码语言:javascript
复制
import sys
print >> sys.stderr, sys.path

在您的wsgi文件中,然后检查错误日志。如果它没有在主错误日志中结束,那么向vhost中添加一个ErrorLog以获取每个vhost错误日志。

另外,对于www-data用户来说,/root/是不可读的,您需要将虚拟env移动到可访问的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20792410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档