我想发表我的网站上亚马逊的EC2实例,我不断收到一个500错误。 我真的不知道为什么。
//日志文件
[Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/apache/wsgi.py' cannot be loaded as Python module.
[Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/apache/wsgi.py'.
[Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last):
[Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/apache/wsgi.py", line 26, in <module>
[Sun Feb 17 23:12:48.066920 2013] from django.core.wsgi import get_wsgi_application
[Sun Feb 17 23:12:48.066945 2013] ImportError: No module named django.core.wsgi
// Apache的配置文件
WSGIScriptAlias / /srv/www/app/mysite/apache/wsgi.py
WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages
WSGIProcessGroup mysite
<Directory /srv/www/app/mysite/apache/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
<Directory /srv/www/app/mysite/apache/>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/static>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/media>
Order deny,allow
Allow from all
</Directory>
//wsgi.py
import os
import sys
import site
site.addsitedir('/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
path = '/srv/www/app/mysite'
if path not in sys.path:
sys.path.append(path)
我知道这是一个古老的线程,但我刚刚撞到了同样的问题,我不认为这是由一个丢失的包裹引起的。 由于Django的核心分布包含正确的WSGI处理程序了。
这里的问题是,当执行wsgi.py它缺少站点包的包从你的virtualenv。 (如果您已经激活了您的virtualenv,并做了PIP安装Django那么一切都很好。你有必要的Django的包)。
就我而言,我固定修改我的路径/到/项目/工程/ wsgi.py文件sys.path中的问题。
你有你的项目目录和你的virtualenv站点包追加到sys.path的列表。 这里被包含在我的项目,我wsgi.py文件(谈到与django-admin.py启动项目创建的wsgi.py)......,我不得不以修改,使其与Apache工作
# =====================
# wsgi.py file begin
import os, sys
# add the hellodjango project path into the sys.path
sys.path.append('<PATH_TO_MY_DJANGO_PROJECT>/hellodjango')
# add the virtualenv site-packages path to the sys.path
sys.path.append('<PATH_TO_VIRTUALENV>/Lib/site-packages')
# poiting to the project settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# wsgi.py file end
# ===================
确保:
您添加的mod_wsgi的Apache模块目录的mod_wsgi必须编译用于操作系统,Apache和Python版本你有
添加的加载模块的命令到你的httpd.conf加载的mod_wsgi模块的LoadModule wsgi_module模块/ mod_wsgi.so
在你的httpd.conf或任何的conf配置Django的细节包括你在你的httpd.conf
基于文档如何使用Django与Apache和mod_wsgi的
WSGIScriptAlias / <PATH_TO_PROJECT>/hellodjango/hellodjango/wsgi.py
WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_VIRTUALENV>/Lib/site-packages
<Directory <PATH_TO_PROJECT>/hellodjango/hellodjango>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
希望这可以帮助。 它为我工作。
此添加到Apache配置文件:
WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
对我来说,这表明Django的不是在服务器安装。 通过固定
pip install Django
我刚才也有类似的错误。 事实证明,我们的Django的代码是在蟒蛇3.5开发的,但由于某些原因,谁部署了我们的服务器设置VIRTUALENV与Python 2.7万人。 我们重新部署与Python 3.5和一切工作为我们
下面是我收到的错误信息:
$ python serviceStartup.py
Traceback (most recent call last):
File "serviceStartup.py", line 10, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi
希望这将与任何人看到类似的错误消息帮助!
你已经配置好非常好我的朋友,只需要给访问这两个项目的virtualenv迪尔斯apache用户权限。
例:
sudo chown -R www-data:www-data /home/ubuntu/projects
sudo chown -R www-data:www-data /home/ubuntu/virtualenv
这解决了我的问题与ImportError: No module named django.core.wsgi
(virtualenvs文件夹),并ImportError: No module named <project-name>.settings
(项目文件夹)
乍一看,我为我的英语很抱歉。 我也面临这个问题,我已经改变“wsgi.py”文件,以解决它:
import os
import django
from django.core.handlers.wsgi import WSGIHandler
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eisentask.settings.production")
django.setup(set_prefix=False)
application = WSGIHandler()
对我来说,一些变量需要被设置好的(适用于Windows):
set PYTHONHOME=F:\path\to\python
set PYTHONPATH=F:\path\to\python
请确保您使用的virtualenv内安装了uwsgi模块,用于为例:
/home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi
文章来源: ImportError: No module named django.core.wsgi Apache + VirtualEnv + AWS + WSGI