You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

虚拟环境下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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:44:54