gunicorn:没有名为“wsgi”的模块

2024-06-06 14:55:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目,设置为运行与docker一个一台机器,这是ubuntu我一直运行它很好,但最近我试图运行在我的windows笔记本电脑上,并得到一个ModuleNotFoundError。

[2018-01-05 20:31:46 +0000] [5] [INFO] Starting gunicorn 19.7.1
explore_1   | [2018-01-05 20:31:46 +0000] [5] [INFO] Listening at: http://0.0.0.0:8080 (5)
explore_1   | [2018-01-05 20:31:46 +0000] [5] [INFO] Using worker: sync
explore_1   | [2018-01-05 20:31:46 +0000] [8] [INFO] Booting worker with pid: 8
explore_1   | [2018-01-05 20:31:46 +0000] [8] [ERROR] Exception in worker process
explore_1   | Traceback (most recent call last):
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
explore_1   |     worker.init_process()
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
explore_1   |     self.load_wsgi()
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
explore_1   |     self.wsgi = self.app.wsgi()
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
explore_1   |     self.callable = self.load()
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
explore_1   |     return self.load_wsgiapp()
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
explore_1   |     return util.import_app(self.app_uri)
explore_1   |   File "/usr/local/lib/python3.6/site-packages/gunicorn/util.py", line 352, in import_app
explore_1   |     __import__(module)
explore_1   | ModuleNotFoundError: No module named 'wsgi'
explore_1   | [2018-01-05 20:31:46 +0000] [8] [INFO] Worker exiting (pid: 8)
explore_1   | [2018-01-05 20:31:47 +0000] [5] [INFO] Shutting down: Master
explore_1   | [2018-01-05 20:31:47 +0000] [5] [INFO] Reason: Worker failed to boot.

我检查以确保路径的环境变量设置正确。有没有任何常见的枪械问题,可能导致这或其他事情,突出作为明显的检查?

此容器的dockerfile如下:

FROM python:3
MAINTAINER dev@temboinc.com
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /usr/src/app
ENV MODE dev
EXPOSE 8080
VOLUME /static
COPY src/static /static
RUN python3 setup.py install
#CMD python3 wsgi.py
CMD gunicorn -w 3 -b 0.0.0.0:8080 wsgi --reload

Tags: inpyselfinfoappwsgilibpackages
3条回答

更改此:

CMD gunicorn -w 3 -b 0.0.0.0:8080 wsgi --reload

对此:

CMD gunicorn -w 3 -b 0.0.0.0:8080 /full/path/to/wsgi --reload

其中/full/path/to/wsgi是应用程序的绝对路径——我猜是/usr/src/app/wsgi?)

您要求gunicorn在当前目录中运行文件名wsgi.py,或者运行名为wsgi的模块。后者可以是一个名为wsgi/的目录,其中包含一个__init__.py文件(因此您需要wsgi/__init__.py)。

如果您的web应用程序包含在具有不同名称的文件中,则需要将gunicorn命令从wsgi调整为任何名称。

因为看起来你是在使用Docker来运行这个,所以也有可能你没有在Dockerfile中使用ADD命令来将wsgi.py文件复制到Docker容器中。或者,您可能已经这样做了,但它与运行gunicorn命令的目录不同。

要更改到项目文件夹,可以使用命令--chdir
示例:

gunicorn -w 2 -b 0.0.0.0:8000 --chdir /code/myproject myproject.wsgi

相关问题 更多 >