Gunicorn Импорт по имени файла не поддерживается (модуль)

Я недавно создал контейнер ubuntu и установил необходимые пакеты в виртуальной среде. Затем я выполнил уже существующий код службы python по пути python/to/my/file/X.py(в virualenv) он работает нормально. Итак, я выполнил с gunicorn как gunicorn -b 0.0.0.0:5000 путь /to/my/file/X: app (in virualenv), но я получаю следующую ошибку

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

Может кто-нибудь помочь мне исправить ImportError: Import by filename is not supported. Почему это происходит? Я реализовал gunicorn на другом сервере, там отлично работает.

Ответ 1

Это точно так же, как ошибка говорит: вы не можете ссылаться на модули Python по пути к файлу, вы должны ссылаться на него путем маршрута с пунктиром, начиная с каталога, находящегося в PYTHONPATH.

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

Ответ 2

Просто для гуглеров, у меня также была эта ошибка, когда я случайно запускал свое приложение, используя отпугиватель-пушки, вместо патрона-пушки. gunicorn не ошибся, но api.ini не был найден, и он выбросил ошибку "Импортировать по имени файла не поддерживается".