El script WSGI de destino ‘/ opt / python / current / app /… /wsgi.py’ no se puede cargar como módulo Python

Estoy intentando implementar una aplicación django en aws beanstalk pero obtengo un 500.

Obtengo ImportError y he intentado todo lo que la web ha sugerido, creo, sin fin.

La traza del registro del servidor aws:

------------------------------------- /var/log/httpd/error_log ------------------------------------- [Sun Mar 26 02:55:17.126990 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] mod_wsgi (pid=11381): Target WSGI script '/opt/python/current/app/src/kirr/wsgi.py' cannot be loaded as Python module. [Sun Mar 26 02:55:17.127048 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] mod_wsgi (pid=11381): Exception occurred processing WSGI script '/opt/python/current/app/src/kirr/wsgi.py'. [Sun Mar 26 02:55:17.127087 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] Traceback (most recent call last): [Sun Mar 26 02:55:17.127244 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/current/app/src/kirr/wsgi.py", line 7, in  [Sun Mar 26 02:55:17.127252 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] application = get_wsgi_application() [Sun Mar 26 02:55:17.127347 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/run/venv/lib/python3.4/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application [Sun Mar 26 02:55:17.127354 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] django.setup(set_prefix=False) [Sun Mar 26 02:55:17.127446 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/run/venv/lib/python3.4/site-packages/django/__init__.py", line 22, in setup [Sun Mar 26 02:55:17.127453 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) [Sun Mar 26 02:55:17.127584 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/run/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 53, in __getattr__ [Sun Mar 26 02:55:17.127602 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] self._setup(name) [Sun Mar 26 02:55:17.127630 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/run/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 41, in _setup [Sun Mar 26 02:55:17.127635 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] self._wrapped = Settings(settings_module) [Sun Mar 26 02:55:17.127655 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/run/venv/lib/python3.4/site-packages/django/conf/__init__.py", line 97, in __init__ [Sun Mar 26 02:55:17.127659 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] mod = importlib.import_module(self.SETTINGS_MODULE) [Sun Mar 26 02:55:17.127780 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "/opt/python/run/baselinenv/lib64/python3.4/importlib/__init__.py", line 109, in import_module [Sun Mar 26 02:55:17.127786 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] return _bootstrap._gcd_import(name[level:], package, level) [Sun Mar 26 02:55:17.127802 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 2254, in _gcd_import [Sun Mar 26 02:55:17.127818 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 2237, in _find_and_load [Sun Mar 26 02:55:17.127831 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 2212, in _find_and_load_unlocked [Sun Mar 26 02:55:17.127843 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 321, in _call_with_frames_removed [Sun Mar 26 02:55:17.127854 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 2254, in _gcd_import [Sun Mar 26 02:55:17.127865 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 2237, in _find_and_load [Sun Mar 26 02:55:17.127881 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] File "", line 2224, in _find_and_load_unlocked [Sun Mar 26 02:55:17.127902 2017] [:error] [pid 11381] [remote 127.0.0.1:45055] ImportError: No module named 'kirr' 

El archivo wsgi.py :

 import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kirr.settings") application = get_wsgi_application() 

/etc/httpd/conf.d/ wsgi.conf :

 LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonHome /opt/python/run/baselinenv WSGISocketPrefix run/wsgi WSGIRestrictEmbedded On  Alias /static/ /opt/python/current/app/static/  Order allow,deny Allow from all  WSGIScriptAlias / /opt/python/current/app/src/kirr/wsgi.py  Require all granted  WSGIDaemonProcess wsgi processes=1 threads=15 display-name=%{GROUP} \ python-path=/opt/python/current/app:/opt/python/run/venv/lib64/python3.4/site-packages:/opt/python/run/venv/lib/python3.4/site-packages user=wsgi group=wsgi \ home=/opt/python/current/app WSGIProcessGroup wsgi  LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 

Hay dos archivos de configuración en mi aplicación django ubicados dentro de .elasticbeanstalk :

 .elasticbeanstalk/**01_Packages.config**: `packages: yum: git: [] mysql-server: [] mysql: [] libjpeg-turbo-devel: [] zlib-devel: []` .elasticbeanstalk/**02_Python.config**: `container_commands: 01_migrate: command: "source /opt/python/run/venv/bin/activate && python src/manage.py migrate --noinput" leader_only: true 02_createsu: command: "source /opt/python/run/venv/bin/activate && python src/manage.py createsu" leader_only: true 03_collectstatic: command: "source /opt/python/run/venv/bin/activate && python src/manage.py collectstatic --noinput" option_settings: "aws:elasticbeanstalk:application:environment": DJANGO_SETTINGS_MODULE: “kirr.settings" "PYTHONPATH": "/opt/python/current/app/src:$PYTHONPATH" "ALLOWED_HOSTS": ".elasticbeanstalk.com" "aws:elasticbeanstalk:container:python": WSGIPath: src/kirr/wsgi.py NumProcesses: 3 NumThreads: 20 "aws:elasticbeanstalk:container:python:staticfiles": "/static/": "www/static/" 

Esto es lo que he intentado:

INTENTO 1: Algunos sugirieron que podría tratarse de un problema con la versión de Python. Reconstruí mi aplicación django usando Python 3.4, igual que en beanstalk, pero no hubo ningún efecto.

INTENTO 2: Como se sugiere aquí , he cambiado los privilegios del archivo wsgi. Para hacer esto, ssh en beanstalk ( eb ssh ), cd al directorio y luego:

 $ sudo chmod a+x wsgi.py 

Sin efecto.

INTENTO 3, como se sugiere aquí , he cambiado el valor de SOLINUX a deshabilitado como:

 (venv)[ec2-user@ip-112-31-10-129 src]$ sudo nano /etc/selinux/semanage.conf 

¿Alguna idea?

Tratar:

 WSGIDaemonProcess wsgi threads=15 display-name=%{GROUP} \ python-home=/opt/python/run/venv \ python-path=/opt/python/current/app/src \ user=wsgi group=wsgi 

Tuvo una ruta incorrecta para lo que es el directorio padre de su proyecto. Tampoco se utiliza el método preferido para declarar dónde se encuentra el entorno virtual de Python.

En este último, asegúrese de leer la documentación:

Consulte también la documentación de Django:

Dado que solo está ejecutando la única aplicación WSGI, también se recomienda configurar:

 WSGIApplicationGroup %{GLOBAL} 

Entonces, aparentemente había guardado los archivos de configuración en la carpeta incorrecta. .elasticbeanstalk/ lugar de . ebextensions/ . ebextensions/ . Utilizando este último solucionamos el problema.

Recuerde forzar git-add si el git no quiere agregar la carpeta oculta, como:

 git add -f .ebextensions/