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.
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
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
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'.