[英]ImportError: No module named django.core.wsgi (ubuntu)
我正在按照本指南為我的 django Web 應用程序配置 apache: https : //docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/#basic-configuration
我已經使用以下方法在 ubuntu 15.10 服務器上為 apache安裝了Django 、 mod_wsgi-express (新方法)和mod_wsgi :
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>
但是當我啟動 apache 時,出現以下錯誤:
[Sat Mar 26 12:10:06.876025 2016] [wsgi:error] [pid 10622:tid 139806697674496] [client 217.40.250.17:52124] from django.core.wsgi import get_wsgi_application
[Sat Mar 26 12:10:06.876057 2016] [wsgi:error] [pid 10622:tid 139806697674496] [client 217.40.250.17:52124] ImportError: No module named django.core.wsgi
但是該模塊確實存在於我在上面WSGIPythonPath 中提供的路徑中:
~/.local/lib/python2.7/site-packages/django/core $ cat wsgi.py
import django
from django.core.handlers.wsgi import WSGIHandler
並且:
~/.local/lib/python2.7/site-packages $ ll
total 24
drwx------ 6 user user 4096 Mar 24 22:25 ./
drwx------ 3 user user 4096 Mar 20 20:56 ../
drwxrwxr-x 17 user user 4096 Mar 24 22:25 django/
drwxrwxr-x 2 user user 4096 Mar 24 22:25 Django-1.9.4.dist-info/
drwxrwxr-x 5 user user 4096 Mar 20 20:59 mod_wsgi/
drwxrwxr-x 2 user user 4096 Mar 20 20:59 mod_wsgi-4.4.22.egg-info/
我還嘗試驗證 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)
因此,它似乎是針對 Python 2.7 構建的,而 Python 2.7 與安裝 Django 的版本相同。
那么為什么 apache 無法加載我的應用程序/django?
基於: http : //www.webforefront.com/django/setupapachewebserverwsgi.html
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 時遇到此錯誤: https : //uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
當我輸入命令時: uwsgi --http :8000 --module mysite.wsgi
我收到錯誤:
from django.core.wsgi import get_wsgi_application ImportError: No module named django.core.wsgi
這對我來說毫無意義,因為當我在 virtualenv 中進入 python shell 並導入模塊時,它運行得很好。
但是,我發現本教程對於消除錯誤很有用: https : //gist.github.com/evildmp/3094281
uwsgi --http :8000 --module project.wsgi --virtualenv /path/to/virtualenv
輸入 virtualenv 的路徑會導致 WSGI 找到它丟失的模塊。
您可以通過在命令提示符/終端中輸入$ECHO virtualenv
來找到 virtualenv 的路徑。
我有同樣的問題。
原因是我通過 apt 安裝了 gunicorn,然后它在系統范圍的 Python 2 安裝中運行,而不是我的 venv。
通過卸載系統 gunicorn,然后激活我的 venv,並使用 pip install gunicorn 將 gunicorn 安裝到 venv 來修復它。 然后它立即起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.