2015-11-11 2 views
10

Ich habe einen Container Ubuntu neu erstellt und die erforderlichen Pakete in der virtuellen Umgebung installiert. Dann habe ich den bereits existierenden Python-Service-Code nach Python-Pfad/to/my/file/X.py (in virualenv) ausgeführt. So habe ich mit gunicorn ausgeführt als gunicorn -b 0.0.0.0:5000 path/to/my/file/X: app (in virualenv), aber ich bin immer die folgenden FehlerGunicorn Import nach Dateiname wird nicht unterstützt (Modul)

2015-11-11 16:38:08 [19118] [INFO] Starting gunicorn 17.5 
2015-11-11 16:38:08 [19118] [INFO] Listening at: http://0.0.0.0:444 (19118) 
2015-11-11 16:38:08 [19118] [INFO] Using worker: sync 
2015-11-11 16:38:08 [19123] [INFO] Booting worker with pid: 19123 
2015-11-11 16:38:08 [19123] [ERROR] Exception in worker process: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 473, in spawn_worker 
    worker.init_process() 
    File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 100, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/usr/lib/python2.7/dist-packages/gunicorn/app/base.py", line 115, in wsgi 
    self.callable = self.load() 
    File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 33, in load 
    return util.import_app(self.app_uri) 
    File "/usr/lib/python2.7/dist-packages/gunicorn/util.py", line 362, in import_app 
    __import__(module) 
ImportError: Import by filename is not supported. 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 473, in spawn_worker 
    worker.init_process() 
    File "/usr/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 100, in init_process 
    self.wsgi = self.app.wsgi() 
    File "/usr/lib/python2.7/dist-packages/gunicorn/app/base.py", line 115, in wsgi 
    self.callable = self.load() 
    File "/usr/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 33, in load 
    return util.import_app(self.app_uri) 
    File "/usr/lib/python2.7/dist-packages/gunicorn/util.py", line 362, in import_app 
    __import__(module) 
ImportError: Import by filename is not supported. 
2015-11-11 16:38:08 [19123] [INFO] Worker exiting (pid: 19123) 
2015-11-11 16:38:09 [19118] [INFO] Shutting down: Master 

Kann mir jemand helfen beheben die ImportError: Import by filename is not supported. Warum es kommt? Ich habe Gunicorn in anderen Server implementiert, es funktioniert gut dort.

Antwort

12

Es ist genau so, wie der Fehler sagt: Sie können nicht auf Python-Module nach Dateipfad verweisen, Sie müssen darauf verweisen, indem Sie in einem Verzeichnis, das sich in PYTHONPATH befindet, den Pfad des gestrichelten Moduls angeben.

gunicorn -b 0.0.0.0:5000 path.inside.virtualenv.X:app 
+0

Vielen Dank für Ihre sofortige Antwort, aber ich bekomme den gleichen Fehler nach der Änderung 'Datei "/usr/lib/python2.7/dist-packages/gunicorn/util.py", Zeile 362, in Import_app __import __ (Modul) ImportError: Kein Modul namens var.www.o9_prod.dev.myprojectenv .__ init __: app '. Ich habe noch einen Zweifel daran, dass es den Pfad als '/usr/lib/python2.7/dist-packages/gunicorn' nimmt, aber der Pfad meiner virtuellen Umgebung ist 'var/www/prod/myvirtualenv/bin'. also bekomme ich diesen Fehler deswegen? – gopinath

+0

Das ist nicht der gleiche Fehler. Und du hast nicht getan, was ich gesagt habe: Der Pfad muss von der Wurzel des Virtualenv sein. –

+0

oh sorry, also können Sie bitte überprüfen, ob dies ein richtiger Befehl ist, um Gunicorn zu starten "gunicorn -b 0.0.0.0:5000 /var/www/prod/myvirtualenv.__init__:app" und wenn ich falsch liege, bitte korrigieren Sie mich – gopinath

0

Gerade für die Googler, hatte ich auch diesen Fehler, wenn ich meine Anwendung versehentlich lief gunicorn -Paste anstelle von gunicorn --paste. Gunicorn hat keinen Fehler, aber die api.ini wurde nicht gefunden und es wurde der Fehler 'Import nach Dateiname wird nicht unterstützt' angezeigt.