Python ImportError:没有名为django.core.wsgi的模块(ubuntu)
我按照本指南为我的django web应用程序配置apache: 我已经用以下方式在ubuntu 15.10服务器上安装了(新方式):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
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