Django ModuleNotFoundError: нет модуля с именем «myProject» - PullRequest
0 голосов
/ 24 мая 2018

ModuleNotFoundError: Нет модуля с именем myProject, но я не знаю причину.Я рад, если вы мне скажете.

・ CentOS 7.2
・ Python 3.6
・ Django 2.0
・ apache 2.4

Я устанавливаю виртуальную среду следующим образом

pip install virtualenv
mkdir xxx
cd xxx 
python3 -m venv xxx
source xxx/bin/activate
pip install mod_wsgi
mod_wsgi-express module-config
LoadModule wsgi_module "/home/username/myProject/myProject/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/username/myProject/myProject"

■ /etc/httpd/conf.d/django.conf

NameVirtualHost *:80
LoadModule wsgi_module /home/username/myProject/myProject/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonHome /home/username/myProject/myProject
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>

  ServerName xxx.com
  DocumentRoot /home/username

  WSGIApplicationGroup %{GLOBAL}
  WSGIDaemonProcess xxx python-home=/home/username/myProject/myProject python-path=/home/username/myProject/myProject/lib/python3.6/site-packages
  WSGIProcessGroup xxx
  WSGIScriptAlias / /home/username/myProject/myProject/wsgi.py

  <Directory /home/username/myProject/myProject/static>
      Require all granted
  </Directory>

  <Directory /home/username/myProject/myProject>
      <Files wsgi.py>
          Require all granted
      </Files>
  </Directory>
</VirtualHost>

■ wsgi.py

import os,sys

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings")

application = get_wsgi_application()

1 Ответ

0 голосов
/ 25 мая 2018

Чтение:

Директива WSGIPythonHome или опция python-home должны указывать на корневой каталог виртуальной среды Python.Это должно быть то же значение, которое sys.prefix имеет, когда Python запускается для этой виртуальной среды.

Директива WSGIPythonPath или python-path будет тогда установлена ​​в каталог кода вашего проекта, в котором модули / пакетысуществует, вероятно, /home/username/myProject в вашем случае.

Не используйте эти более поздние параметры для указания на каталог site-packages, используйте первые параметры для указания местоположения виртуальной среды.

Я бы предложил, так как вы используете режим демона, чтобы добавить:

WSGIRestrictEmbedded On

после строки LoadModule.Затем удалите WSGIPythonHome и WSGIPythonPath и используйте опции python-home и python-path для WSGIDaemonProcess.

Кстати, DJANGO_SETTINGS_MODULE не будет xxx.settings.Вы, вероятно, имеете в виду myProject.settings.

Кроме того, похоже, что ваша виртуальная среда является каталогом кода проекта.Если это так, не очень рекомендуется.Создайте виртуальную среду как отдельный подкаталог где-нибудь по-своему.Не смешивайте его с вашим кодом, так как тогда будет очень трудно удалить виртуальную среду и воссоздать ее.

...