Kann keine Module von Django App auf AWS Elastic Beanstalk finden

Ich versuche, eine Django App auf AWS Elastic Beanstalk laufen zu lassen, aber bin mit dem, was scheint, wie es könnte ein PYTHONPATH oder virtualenv Problem sein, und ich kann es nicht herausfinden.

Wenn ich versuche, eine Seite in meinem Browser zu laden, bekomme ich den gelben Django-Fehlerbildschirm (ich bin immer noch im Debug-Modus):

Exception Value: No module named views.rest Exception Location: /opt/python/current/app/project/urls.py in <module>, line 3 Python Executable: /opt/python/run/venv/bin/python Python Version: 2.7.5 Python Path: ['/opt/python/run/venv/lib/python2.7/site-packages', '/opt/python/current/app', ... 

Meine urls.py Importe sind:

 from django.conf.urls import patterns, include, url from django.contrib import admin from myapp.views.rest import * 

Wenn ich in die EC2-Instanz schaue, sieht der Pfad richtig aus. /opt/python/current/app enthält meine Bewerbung, einschließlich /opt/python/current/app/myapp/views/rest.py .

Meine Verzeichnisstruktur enthält (natürlich gibt es natürlich auch):

 app/ .ebextensions/ packages.config python.config .elasticbeanstalk/ config optionsettings.myapp-deployment-env project/ settings.py application.py myapp/ views/ rest.py views.py __init__.py 

In __init__.py habe ich:

 from myapp.views.views import * from myapp.views.rest import * 

Das Problem ist nicht spezifisch für diese Dateien aber – wenn ich einen weiteren Import zu urls.py, die auch nicht fehlschlägt, so ist es wie es ist nicht finden die App überhaupt.

In packages.config habe ich:

 packages: yum: postgresql-devel: [] 

In python.config habe ich (in einem Versuch, das virtualenv zu laden, was vielleicht nicht nötig ist?)

 container_commands: 00_activate: command: "source /opt/python/run/venv/bin/activate" 01_make_admin_executable: command: "chmod +x scripts/createadmin.py" leader_only: true 02_make_executable: command: "chmod +rx application.py" leader_only: true 03_syncdb: command: "python manage.py syncdb --noinput" leader_only: true 04_collectstatic: command: "python manage.py collectstatic --noinput" option_settings: - option_name: AWS_SECRET_KEY value: mykey - option_name: AWS_ACCESS_KEY_ID value: myaccesskeyid - option_name: application_stage value: "staging" 

Glücklich, die anderen Konfigurationsdateien aufzulisten, wenn sie hilfreich sind. Sie beinhalten den Einstellungsort, aber keinen spezifischen Hinweis auf PYTHONPATH usw.

 [aws:elasticbeanstalk:application:environment] DJANGO_SETTINGS_MODULE=project.settings 

Ich habe eb update und git aws.push .

Wirklich kämpft mit diesem! Mein erster Versuch bei einem AWS-Einsatz hat so offensichtlich etwas Wichtiges verpasst. Wirklich schätze die Hilfe, wenn jemand weiß, was ich vermisst habe.

One Solution collect form web for “Kann keine Module von Django App auf AWS Elastic Beanstalk finden”

Dies erwies sich als ein mod_wsgi vs Django Development Server Problem. Dieser Beitrag von Graham Dumpleton war sehr hilfreich beim Verständnis (es kann nicht skim-lesen).

Mod_wsgi muss von der Lage meiner Website erzählt werden. Meine WSGI-Datei (application.py) sieht jetzt so aus, und die Importe funktionieren:

 import os import sys sys.path.insert(0, '/opt/python/current/app') os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application() 
  • Wie kann ich UUIDs in SQLAlchemy verwenden?
  • Sqlalchemie seltsames Verhalten beim Einfügen mehrerer Zeilen und Rückgabe des Primärschlüssels
  • Split 95mb JSON Array in kleinere Stücke?
  • Django-Reverse-Abfrage durch das zuletzt erstellte Objekt
  • Wie schreibe ich DataFrame zu postgres Tabelle?
  • Django: doppelter Schlüsselwert verletzt eine eindeutige Einschränkung
  • Psycopg2 COPY mit cursor.copy_from () friert mit großen Eingängen ein
  • Wie erstelle ich eine SQL-Ansicht mit SQLAlchemy?
  • Hang in Python-Skript mit SQLAlchemy und Multiprocessing
  • Django, Postgres - Spalte kann nicht automatisch gegossen werden, um Integer zu schreiben
  • SQLAlchemy create_all () erstellt keine Tabellen
  • Python ist die beste Programmiersprache der Welt.