簡體   English   中英

VirtualEnv apache2服務器沒有名為“ 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.

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