[英]Django and apache2 (no virtualenv): ImportError: No module named 'django'
[英]VirtualEnv apache2 server No module named 'django'
我正在/home/myname/myproject/venv
內部為我的apache2服務器運行虛擬環境
我通過以下方式激活我的虛擬環境
source venv/bin/activate
跑步
which django-admin
從我的虛擬環境中返回正確的文件。
跑步
import django
django.__file__
退貨
/home/myname/myproject/venv/lib/python3.6/site-packages/django/__init__.py
跑步
pip freeze
返回我所有需要的包。
我也有我的apache2配置文件使用python-path參數指向venv目錄
但是,重新啟動服務器后,我仍然收到django的ModuleNotFoundError。
這里有什么問題?
編輯:apache2配置文件
Alias /static /home/myname/myproject/static
<Directory /home/myname/myproject/static>
Require all granted
</Directory>
Alias /media /home/myname/myproject/media
<Directory /home/myname/myproject/media>
Require all granted
</Directory>
<Directory /home/myname/myproject/myproj>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /home/myname/myproject/myproj/wsgi.py
WSGIDaemonProcess myproject_app python-path=/home/myname/myproject python-home=/home/myname/myproject/venv/
WSGIProcessGroup myproject_app
WSGIApplicationGroup %{GLOBAL}
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
#os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproj.settings')
application = get_wsgi_application()
您需要將虛擬環境的激活添加到wsgi.py
文件中。
import os
import sys
PROJECT_DIR = '/home/myname/myproject'
sys.path.insert(0, PROJECT_DIR)
def execfile(filename):
globals = dict( __file__ = filename )
exec( open(filename).read(), globals )
activate_this = os.path.join( PROJECT_DIR, 'venv/bin', 'activate_this.py' )
execfile( activate_this )
此代碼應在django
導入之前。 否則,每當重新啟動Apache2
,就需要手動激活虛擬環境。
注意:確保在虛擬環境中安裝了所有要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.