2015-11-11 11 views
10

Mam nowo utworzony kontener ubuntu i zainstalowałem wymagane pakiety w środowisku wirtualnym. Następnie wykonałem wcześniej istniejący kod serwisowy Pythona przez Pythona path/to/my/file/X.py (w virualenv) działa dobrze. Więc ja wykonany z gunicorn jako gunicorn -b 0.0.0.0:5000 ścieżka/mój/plików/aplikacji/x: (w virualenv), ale ja dostaję następujący błądImport Gunicorn przez nazwę pliku nie jest obsługiwany (moduł)

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 

Czy ktoś pomoże mi rozwiązać ImportError: Import by filename is not supported. Dlaczego nadchodzi? Zaimplementowałem gunicorn na innym serwerze, działa tam dobrze.

Odpowiedz

12

To tak, jak w przypadku błędu: nie można odwoływać się do modułów Pythona według ścieżki pliku, należy odwoływać się do niego za pomocą przerywanej ścieżki modułu, zaczynając od katalogu w PythonPath.

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

Dziękuję za natychmiastową odpowiedź, ale otrzymuję ten sam błąd po zmianie "Plik" /usr/lib/python2.7/dist-packages/gunicorn/util.py ", wiersz 362, w imporcie_app __import __ (moduł) ImportError: Brak modułu o nazwie var.www.o9_prod.dev.myprojectenv .__ init __: app '. Mam jeszcze jedną wątpliwość, że ścieżka jest "/usr/lib/python2.7/dist-packages/gunicorn", ale moją ścieżką środowiska wirtualnego jest "var/www/prod/myvirtualenv/bin". więc otrzymuję ten błąd z tego powodu? – gopinath

+0

To nie jest ten sam błąd. I nie zrobiłeś tego, co powiedziałem: ścieżka musi pochodzić z korzenia virtualenv. –

+0

oh przepraszam, więc możesz sprawdzić, czy jest to odpowiednie polecenie, aby rozpocząć gunicorn "gunicorn -b 0.0.0.0:5000 /var/www/prod/myvirtualenv.__init__:app", a jeśli się mylę, popraw mnie – gopinath

0

tylko dla pracowników Google, miałem również ten błąd, kiedy przypadkowo prowadził moją aplikację za pomocą gunicorn -paste zamiast gunicorn --paste. gunicorn nie popełnił błędu, ale api.ini nie został znaleziony i wywołał błąd "Importuj według nazw plików nie jest obsługiwany".

Powiązane problemy