部署Django项目时Gunicorn报错:ModuleNotFoundError: No module named 'authentication.wsgi'
Django部署Gunicorn报错求助
尝试将Django项目部署到生产服务器,配置Gunicorn时失败,求解决办法。
执行的命令
gunicorn --bind 0.0.0.0:8000 authentication.wsgi
注:authentication为应用名称
错误日志
[2022-12-08 14:52:29 +0530] [79282] [INFO] Starting gunicorn 20.1.0 [2022-12-08 14:52:29 +0530] [79282] [INFO] Listening at: http://0.0.0.0:8000 (79282) [2022-12-08 14:52:29 +0530] [79282] [INFO] Using worker: sync [2022-12-08 14:52:29 +0530] [79284] [INFO] Booting worker with pid: 79284 [2022-12-08 14:52:29 +0530] [79284] [ERROR] Exception in worker process Traceback (most recent call last): File "/home/web/.local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker worker.init_process() File "/home/web/.local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 134, in init_process self.load_wsgi() File "/home/web/.local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi self.wsgi = self.app.wsgi() File "/home/web/.local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/home/web/.local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 58, in load return self.load_wsgiapp() File "/home/web/.local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp return util.import_app(self.app_uri) File "/home/web/.local/lib/python3.8/site-packages/gunicorn/util.py", line 359, in import_app mod = importlib.import_module(module) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1014, in _gcd_import File "<frozen importlib._bootstrap>", line 991, in _find_and_load File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked ModuleNotFoundError: No module named 'authentication.wsgi' [2022-12-08 14:52:29 +0530] [79284] [INFO] Worker exiting (pid: 79284) [2022-12-08 14:52:29 +0530] [79282] [INFO] Shutting down: Master [2022-12-08 14:52:29 +0530] [79282] [INFO] Reason: Worker failed to boot.
重点错误
ModuleNotFoundError: No module named 'authentication.wsgi'
wsgi.py文件内容
""" WSGI config for Database project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ """ import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Database.settings') application = get_wsgi_application()
解决办法
- 修正Gunicorn命令:从wsgi.py内容可知项目名称是
Database,wsgi文件属于项目根目录(而非应用目录),因此正确命令应为:gunicorn --bind 0.0.0.0:8000 Database.wsgi - 切换到项目根目录执行:确保你在包含
manage.py的项目根目录下运行Gunicorn,否则无法识别项目模块。 - 配置Python路径:如果项目不在Python默认搜索路径中,可通过环境变量指定:
export PYTHONPATH=/path/to/your/project:$PYTHONPATH gunicorn --bind 0.0.0.0:8000 Database.wsgi - 验证模块可用性:在项目根目录启动Python交互环境,执行
from Database import wsgi,若导入成功则路径配置正确,再重新运行Gunicorn。
内容的提问来源于stack exchange,提问作者ISMAIL MULLA
相关产品推荐
相关产品推荐

