导入错误:没有名为django.core.wsgi的Apache + VIRTUALENV + AW

2019-07-20 01:30发布

我想发表我的网站上亚马逊的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)

Answer 1:

我知道这是一个古老的线程,但我刚刚撞到了同样的问题,我不认为这是由一个丢失的包裹引起的。 由于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
# ===================

确保:

  1. 您添加的mod_wsgi的Apache模块目录的mod_wsgi必须编译用于操作系统,Apache和Python版本你有

  2. 添加的加载模块的命令到你的httpd.conf加载的mod_wsgi模块的LoadModule wsgi_module模块/ mod_wsgi.so

  3. 在你的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>

希望这可以帮助。 它为我工作。



Answer 2:

此添加到Apache配置文件:

WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main


Answer 3:

对我来说,这表明Django的不是在服务器安装。 通过固定

pip install Django


Answer 4:

我刚才也有类似的错误。 事实证明,我们的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

希望这将与任何人看到类似的错误消息帮助!



Answer 5:

你已经配置好非常好我的朋友,只需要给访问这两个项目的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 (项目文件夹)



Answer 6:

乍一看,我为我的英语很抱歉。 我也面临这个问题,我已经改变“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()


Answer 7:

对我来说,一些变量需要被设置好的(适用于Windows):

set PYTHONHOME=F:\path\to\python
set PYTHONPATH=F:\path\to\python


Answer 8:

请确保您使用的virtualenv内安装了uwsgi模块,用于为例:

/home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi


文章来源: ImportError: No module named django.core.wsgi Apache + VirtualEnv + AWS + WSGI