Python ImportError:没有名为django.core.wsgi的模块(ubuntu)

Python ImportError:没有名为django.core.wsgi的模块(ubuntu),python,django,apache,ubuntu,importerror,Python,Django,Apache,Ubuntu,Importerror,我按照本指南为我的django web应用程序配置apache: 我已经用以下方式在ubuntu 15.10服务器上安装了(新方式): pip install Django pip install mod_wsgi sudo aptitude install libapache2-mod-wsgi 接下来,我将以下内容添加到:/etc/apache2/apache2.conf WSGIScriptAlias / /home/user/mysite/mysite/wsgi.py WSGIPyt

我按照本指南为我的django web应用程序配置apache:

我已经用以下方式在ubuntu 15.10服务器上安装了(新方式):

pip install Django
pip install mod_wsgi
sudo aptitude install libapache2-mod-wsgi
接下来,我将以下内容添加到:/etc/apache2/apache2.conf

WSGIScriptAlias / /home/user/mysite/mysite/wsgi.py
WSGIPythonPath /home/user/mysite:/home/user/.local/lib/python2.7/site-packages

<Directory /home/user/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
但该模块确实存在于我在上面的WSGIPythonPath中提供的路径中:

~/.local/lib/python2.7/site-packages/django/core $ cat wsgi.py
import django
from django.core.handlers.wsgi import WSGIHandler
以及:

我还尝试验证mod_wsgi模块构建时所依据的python版本:

 /usr/lib/apache2/modules $ ldd mod_wsgi.so
    linux-vdso.so.1 =>  (0x00007ffe50f31000)
    libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f376fbc2000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f376f9a4000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f376f5d9000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f376f3bf000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f376f1bb000)
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f376efb7000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f376ecaf000)
    /lib64/ld-linux-x86-64.so.2 (0x00005609838b3000)
因此,它似乎是根据Python2.7构建的,Python2.7与Django的安装版本相同

那么为什么apache无法加载我的应用程序/django?基于:

www-data用户(运行apache文件夹的用户)必须具有对包含django安装的文件夹的读取权限。我刚刚做了一个测试,将django安装和web应用程序复制到:/var/www/test,并更改了该文件夹的权限:

sudo chgrp -R www-data /var/www/test
sudo chmod -R g+rwx /var/www/test

应用程序现在可以加载了。

我刚才在根据本教程设置Django、Nginx和WSGI时遇到了这个错误:

当我输入命令时:
uwsgi--http:8000--module mysite.wsgi

我得到一个错误:

从django.core.wsgi导入获取\u wsgi\u应用程序导入错误:否 名为django.core.wsgi的模块

这对我来说毫无意义,因为当我在virtualenv中进入pythonshell并导入模块时,它工作得非常完美

但是,我发现本教程有助于消除错误:

键入virtualenv的路径会导致WSGI找到它丢失的模块

您可以通过在命令提示符/终端中键入
$ECHO virtualenv
来找到virtualenv的路径。

我也有同样的问题

原因是我通过apt安装了gunicorn,然后在系统范围的Python 2安装中运行,而不是我的venv


通过卸载系统gunicorn,然后激活我的venv,并使用pip安装gunicorn将gunicorn安装到venv,修复了此问题。然后它马上就工作了。

您检查过这些链接吗是的,请阅读这两篇文章,但它们没有说明您实际上需要更改对包含django和web应用程序的文件夹的权限。我只找到了一个描述这一点的参考,请参阅我更新的问题欢迎使用堆栈溢出。如果你的解决方案是你对问题的答案,那么请创造一个真实的答案,并提供一个充分的解释,说明它为什么有效。因此,将允许您在超时后选择解决方案。请不要把答案放在你的问题中,因为这不是问题的目的。此外,在更改问题/答案时,请不要将“编辑:”或“更新:”标记添加到问题/答案中。我们可以看到修改了什么。相反,如果您添加了信息,请将其添加到初始位置。chmod g+rwx不仅授予读取权限,还授予对组www数据的每次(包括写入)访问权限。。。这不是很不安全吗?
 /usr/lib/apache2/modules $ ldd mod_wsgi.so
    linux-vdso.so.1 =>  (0x00007ffe50f31000)
    libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f376fbc2000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f376f9a4000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f376f5d9000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f376f3bf000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f376f1bb000)
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f376efb7000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f376ecaf000)
    /lib64/ld-linux-x86-64.so.2 (0x00005609838b3000)
sudo chgrp -R www-data /var/www/test
sudo chmod -R g+rwx /var/www/test
uwsgi --http :8000 --module project.wsgi --virtualenv /path/to/virtualenv