web-dev-qa-db-fra.com

L'importation de Gunicorn par nom de fichier n'est pas prise en charge (module)

J'ai récemment créé un conteneur Ubuntu et installé les packages requis dans l'environnement virtuel. Ensuite, j'ai exécuté le code de service Python préexistant par chemin python/vers/mon/fichier/X.py (dans virualenv), cela fonctionne bien. Donc, j'ai exécuté avec gunicorn comme gunicorn -b 0.0.0.0:5000 chemin/vers/mon/fichier/X: app (dans virualenv) mais je reçois l'erreur suivante

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

Quelqu'un peut-il m'aider à réparer le ImportError: Import by filename is not supported. Pourquoi ça vient? J'ai implémenté gunicorn dans un autre serveur, cela fonctionne très bien là-bas.

11
gopinath

C'est comme si l'erreur disait: vous ne pouvez pas faire référence aux modules Python par chemin de fichier, vous devez y faire référence par chemin de module en pointillé commençant à un répertoire se trouvant dans PYTHONPATH.

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

J'ai fait face au même problème, je l'ai obtenu avec --chdir /path/to/project

gunicorn -b :5000 --chdir /path/to/project X:app

J'espère que cela t'aides

1
Arun G

Juste pour les googlers, j'ai aussi eu cette erreur quand j'ai accidentellement lancé mon application en utilisant gunicorn -paste au lieu de gunicorn -paste. gunicorn n'a pas commis d'erreur, mais le fichier api.ini n'a pas été trouvé et a généré l'erreur 'L'importation par nom de fichier n'est pas prise en charge'.

0
benh57