好吧,经过 5-6 个小时的尝试,我放弃了。我在网上搜索,尝试了所有建议的解决方案,但没有解决我的问题。
目标:在我的 Ubuntu 12.04 VPS 上设置 Django。
问题: Exception occurred processing WSGI script [...] ImportError: No module named django.core.handlers.wsgi
在/etc/log/apache2/error.log 中。
尝试的解决方案: 1) 将 site-packages 目录附加到 Django 的 wsgi.py 文件中的 sys 路径,2) 重新安装 mod_wsgi,3) 确保为与 Django 安装的 Python 版本相同的 Python 版本编译 mod_wsgi,4) chmod 777 用于站点包目录。
环境: Ubuntu 12.04 VPS,在 virtualenv 中安装 Django,Python 版本 2.7.3,Django 版本 1.6.1,mod_wsgi 构建自 mod_wsgi-3.4.tar.gz .
完整的错误消息:
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 文件:
<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:
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()
网站结构
/var/www/
-- mysite.com
-- djangoSite
-- manage.py
-- djangoSite
-- settings.py, wsgi.py etc.
最佳答案
在您的 wsgi.py 中,尝试添加以下内容以激活虚拟环境:
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 配置中,您主要只需要(不需要守护进程):
WSGIScriptAlias / /var/www/mysite.com/djangoSite/djangoSite/wsgi.py
Alias /static/ /var/www/mysite.com/djangoSite/static/
见自创建虚拟主机 this link的部分
关于django - Mod_wsgi 无法加载 django.core.handlers.wsgi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792410/