簡體   English   中英

“ ImportError:沒有名為django.core.wsgi的模塊” apache錯誤

[英]“ImportError: No module named django.core.wsgi” apache error

我正在嘗試在CentOS 7上運行django項目。我的項目中有一個虛擬環境,其中包含所有必需的軟件包,...。 我將httpd.conf文件配置如下:

<VirtualHost *:80>

ServerName the_server_ip_address
ServerAlias localhost

DocumentRoot /var/www/html

# adding these lines for handling static files
Alias /media/ /var/www/html/wsgi-scripts/walk/mysite/static/media
Alias /static/ /var/www/html/wsgi-scripts/walk/mysite/static/static_root/

<Directory /var/www/html>
#Order allow,deny
#Allow from all
Require all granted
Satisfy Any
</Directory>

WSGIDaemonProcess localhost processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/html/wsgi-scripts/walk/walk.venv python-path=/var/www/html/wsgi-scripts/walk/mysite
WSGIProcessGroup localhost

WSGIScriptAlias / /var/www/html/wsgi-scripts/walk/mysite/mysite/wsgi.py

<Directory /var/www/html/wsgi-scripts/walk/mysite/mysite>
WSGIPassAuthorization On
<Files wsgi.py>
Require all granted
</Files>
#Require all granted
</Directory>
</VirtualHost>

我的wsgi.py的配置如下:

import os, sys
# add the mysite project path into the sys.path
sys.path.append('/var/www/html/wsgi-scripts/walk/mysite')

# add the virtualenv site-packages path to the sys.path
sys.path.append('/var/www/html/wsgi- 
scripts/walk/walk.venv/lib/python2.7/site-packages')

# poiting to the project settings
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

from django.core.wsgi import get_wsgi_application

#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

application = get_wsgi_application()

httpd重新啟動正常,但是當我訪問網站時,返回“內部服務器錯誤”,並且apache日志中包含以下幾行:

(most recent call last):
File "/var/www/html/wsgi-scripts/walk/mysite/mysite/wsgi.py", line 21, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi
mod_wsgi (pid=11196): Target WSGI script '/var/www/html/wsgi-scripts/walk/mysite/mysite/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=11196): Exception occurred processing WSGI script '/var/www/html/wsgi-scripts/walk/mysite/mysite/wsgi.py'.
Traceback (most recent call last):
File "/var/www/html/wsgi-scripts/walk/mysite/mysite/wsgi.py", line 21, in <module>
from django.core.wsgi import get_wsgi_application
ImportError: No module named django.core.wsgi

我在此錯誤中停留了兩天,我不知道該怎么辦。

激活virtualenv不僅僅是將站點程序包添加到sys.path。

我個人剛剛在wsgi模塊頂部執行了激活腳本,它運行良好。 例如,

# Run find . -iname 'activate_this.py' and just paste the path here.
env_file="/var/www/html/wsgi-scripts/walk/walk.venv/bin/activate_this.py"

assert os.path.exists(env_file)

# Run the activation
execfile(env_file, dict(__file__=env_file))

這將完成在virtualenv中運行所需的完整路徑操作。 請注意,我斷言該文件存在,只是因為它很容易弄亂路徑。

如果/var/www/html/wsgi-scripts/walk/walk.venv與安裝Django的虛擬環境的sys.prefix絕對相同,則問題可能是mod_wsgi是為不同版本的Python編譯的您的虛擬環境是從中創建的。 您也不需要使用site-packages

看到:

要弄清楚編譯的Python版本mod_wsgi是什么,請參閱:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM