ModuleNotFoundError: Apache, Bitnami, Django приложение не может импортировать из виртуального окружения - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь в первый раз развернуть очень простое приложение Django на экземпляре AWS Lightsail. Я подготовил экземпляр AWS Apache, настроенный с помощью bitnami и django, и успешно выполнил инструкции tutorial без виртуальной среды, но с тех пор потратил часы, пытаясь добавить свой собственный проект с виртуальной средой.

Кажется, что большинство вещей настроено правильно, и я начинаю Apache нормально, только для того, чтобы перейти в браузере по моему URL-адресу и найти в журналах ошибок ошибку ModuleNotFoundError: No module named 'requests'. Это первый импорт любого модуля, установленного через pip, в моем коде, поэтому предполагается, что мой виртуальный env не попал в мой PYTHONPATH. Я только что нашел решение, жестко закодировав путь к моим пакетам сайта и добавив его, используя sys.path.append(...) в моем файле wsgi.py, но я не думаю, что это правильный способ настройки mod_wsgi с приложением django, и я беспокоюсь, что позже это приведет к непредвиденным проблемам.

Все django проекты на сервере расположены по адресу /opt/bitnami/apps/django/django-projects/. Следуя руководству, этот каталог содержал проекты «Project» и «tutorial». Чтобы отделить мой файл requirements.txt и виртуальную среду env от этих проектов, я решил разместить свой проект (очень простое приложение, связанное с расовым равенством) в его собственной папке. Я подозреваю, что эта структура папок имеет решающее значение для моей проблемы:

django-projects/
     Project/
     tutorial/
     re_app/
          env/  # this is the virtual environmnent
          requirements.txt
          racial_equity_project/
               conf/
                    httpd-app.conf
                    httpd-prefix.conf
               db.sqlite3
               manage.py
               racial_equity_app/
                    urls.py
                    views.py
                    ...
               racial_equity_project/
                    settings.py
                    urls.py
                    wsgi.py
                    ...

Я ожидал, что этот файл httpd-app.conf будет работать. Объявление python-home кажется совместимым с docs .

Соответствующие файлы и трассировка стека ниже:

httpd-app.conf

<IfDefine_DJANGOSTACK_LOADED>
      Define IS_DJANGOSTACK_LOADED
      WSGIDaemonProcess wsgi-djangostack   processes=2 threads=15    display-name=%{GROUP} python-home=/opt/bitnami/apps/django/django_projects/re_app/env
</IfDefine>

<Directory "/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project/racial_equity_project">
    Options +MultiViews
    AllowOverride All
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>

    WSGIProcessGroup wsgi-djangostack

    WSGIApplicationGroup %{GLOBAL}
</Directory>

Alias /racial_equity_project/static "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/contrib/admin/static"
WSGIScriptAlias /racial_equity_project '/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project/racial_equity_project/wsgi.py'

wsgi.py

import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project')
sys.path.append('/opt/bitnami/apps/django/django_projects/re_app/env/lib/python3.7/site-packages')  # this is what solved my problem, but is there a better solution?
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project/egg_cache")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "racial_equity_project.settings")
exec(open('/etc/racial_equity_project-production-envvars.py').read())
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Отслеживание от less /opt/bitnami/apache2/logs/error_log

[Fri Jun 19 16:43:17.041048 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118] Traceback (most recent call last):, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041112 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/core/handlers/exception.py", line 34, in inner, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041117 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     response = get_response(request), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041123 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/utils/deprecation.py", line 94, in __call__, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041127 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     response = response or self.get_response(request), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041133 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/core/handlers/exception.py", line 36, in inner, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041137 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     response = response_for_exception(request, exc), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041143 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/core/handlers/exception.py", line 90, in response_for_exception, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041147 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041153 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/core/handlers/exception.py", line 128, in handle_uncaught_exception, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041158 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     callback, param_dict = resolver.resolve_error_handler(500), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041163 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/urls/resolvers.py", line 597, in resolve_error_handler, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041168 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     callback = getattr(self.urlconf_module, 'handler%s' % view_type, None), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041173 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/utils/functional.py", line 80, in __get__, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041177 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     res = instance.__dict__[self.name] = self.func(instance), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041183 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/urls/resolvers.py", line 577, in urlconf_module, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041187 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     return import_module(self.urlconf_name), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041193 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/python/lib/python3.7/importlib/__init__.py", line 127, in import_module, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041199 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     return _bootstrap._gcd_import(name[level:], package, level), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041205 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041210 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 983, in _find_and_load, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041216 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041222 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041227 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap_external>", line 728, in exec_module, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041233 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041239 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project/racial_equity_project/urls.py", line 22, in <module>, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041243 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     path('', include('racial_equity_app.urls')),, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041248 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/lib/python3.7/site-packages/Django-2.2.9-py3.7.egg/django/urls/conf.py", line 34, in include, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041252 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     urlconf_module = import_module(urlconf_module), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041258 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/python/lib/python3.7/importlib/__init__.py", line 127, in import_module, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041262 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     return _bootstrap._gcd_import(name[level:], package, level), referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041267 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041273 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 983, in _find_and_load, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041278 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041284 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041290 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap_external>", line 728, in exec_module, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041295 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041301 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project/racial_equity_app/urls.py", line 3, in <module>, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041305 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     from . import views, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041313 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]   File "/opt/bitnami/apps/django/django_projects/re_app/racial_equity_project/racial_equity_app/views.py", line 6, in <module>, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041317 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118]     import requests, referer: http://3.20.187.50/
[Fri Jun 19 16:43:17.041328 2020] [wsgi:error] [pid 18658] [client 73.222.180.141:55118] ModuleNotFoundError: No module named 'requests', referer: http://3.20.187.50/

Есть идеи, почему эта конфигурация не использует мою виртуальную среду должным образом?

...