虚拟环境下Gunicorn启动Django项目报错ModuleNotFoundError: No module named 'django'
解决Gunicorn无法找到Django模块的问题
问题场景
在manage.py所在目录执行命令,已激活djangodev虚拟环境,Django也已安装在该环境中,但运行gunicorn --bind 0.0.0.0:8000 ctfWebsite.wsgi时,出现ModuleNotFoundError: No module named 'django'错误,后续调整WSGI文件路径、切换执行目录均未解决问题。
错误日志
(djangodev) jordangethers@jordangethers-VirtualBox:~/FSU-CTF-Website-main/FSUweb/x_ctfWebsite$ gunicorn --bind 0.0.0.0:8000 ctfWebsite.wsgi [2023-03-22 18:06:08 -0400] [9894] [INFO] Starting gunicorn 20.1.0 [2023-03-22 18:06:08 -0400] [9894] [INFO] Listening at: http://0.0.0.0:8000 (9894) [2023-03-22 18:06:08 -0400] [9894] [INFO] Using worker: sync [2023-03-22 18:06:08 -0400] [9895] [INFO] Booting worker with pid: 9895 [2023-03-22 18:06:08 -0400] [9895] [ERROR] Exception in worker process Traceback (most recent call last): File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 589, in spawn_worker worker.init_process() File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 134, in init_process self.load_wsgi() File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 146, in load_wsgi self.wsgi = self.app.wsgi() File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 58, in load return self.load_wsgiapp() File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp return util.import_app(self.app_uri) File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 384, in import_app mod = importlib.import_module(module) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/home/jordangethers/FSU-CTF-Website-main/FSUweb/x_ctfWebsite/ctfWebsite/wsgi.py", line 12, in <module> from django.core.wsgi import get_wsgi_application ModuleNotFoundError: No module named 'django' [2023-03-22 18:06:08 -0400] [9895] [INFO] Worker exiting (pid: 9895) [2023-03-22 18:06:08 -0400] [9894] [INFO] Shutting down: Master [2023-03-22 18:06:08 -0400] [9894] [INFO] Reason: Worker failed to boot. (djangodev) jordangethers@jordangethers-VirtualBox:~/FSU-CTF-Website-main/FSUweb/x_ctfWebsite$ pip install django Requirement already satisfied: django in /home/jordangethers/.virtualenvs/djangodev/lib/python3.10/site-packages (4.1.5) Requirement already satisfied: sqlparse>=0.2.2 in /home/jordangethers/.virtualenvs/djangodev/lib/python3.10/site-packages (from django) (0.4.3) Requirement already satisfied: asgiref<4,>=3.5.2 in /home/jordangethers/.virtualenvs/djangodev/lib/python3.10/site-packages (from django) (3.6.0)
已尝试的无效操作
- 修改
ctfWebsite.wsgi文件,添加虚拟环境site-packages路径和项目子目录路径,但未解决模块找不到的问题 - 切换执行目录,导致出现找不到
ctfWebsite.wsgi的新问题
解决方案
1. 确保Gunicorn安装在虚拟环境内
系统全局安装的Gunicorn会使用系统Python解释器,而非虚拟环境的,因此找不到虚拟环境中的Django。执行以下步骤:
# 卸载全局Gunicorn sudo pip uninstall gunicorn # 激活虚拟环境后安装Gunicorn pip install gunicorn
2. 直接使用虚拟环境的Python启动Gunicorn
指定虚拟环境的Python解释器路径来运行Gunicorn,确保依赖环境正确:
/home/jordangethers/.virtualenvs/djangodev/bin/python -m gunicorn --bind 0.0.0.0:8000 ctfWebsite.wsgi
3. 修正WSGI文件的路径配置
调整ctfWebsite.wsgi文件,先将项目根目录(即manage.py所在目录)添加到sys.path,再导入Django模块:
import os, sys # 添加项目根目录路径 sys.path.append('/home/jordangethers/FSU-CTF-Website-main/FSUweb/x_ctfWebsite') os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ctfWebsite.settings') # 先设置环境和路径,再导入Django from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
4. 验证虚拟环境激活状态
执行命令前,确认虚拟环境已正确激活,可通过以下命令检查Python和pip的路径:
which python which pip
输出应指向/home/jordangethers/.virtualenvs/djangodev/bin/目录下的对应文件。
内容的提问来源于stack exchange,提问作者Jordan Gethers
相关产品推荐
相关产品推荐

