使用Gunicorn启动Django项目报错:No module named 'myproject'
解决Gunicorn启动Django项目时的ModuleNotFoundError问题
问题核心
你的gunicorn_config.py中pythonpath配置错误,指向了虚拟环境的Python库路径,而非Django项目的根目录,导致Gunicorn无法找到myproject模块。同时执行命令的目录也影响了Python路径的识别。
解决方案
1. 修正gunicorn_config.py的Python路径配置
将pythonpath改为包含项目根目录(即存放manage.py的外层myproject目录)的路径。示例:
# gunicorn_config.py # 替换为你的项目根目录实际路径,比如/home/mywsl/myproject pythonpath = '/home/mywsl/myproject' bind = "0.0.0.0:8000" workers = 4 timeout = 60
如果需要保留虚拟环境的路径,可以用列表形式添加多个路径:
pythonpath = ['/home/mywsl/myproject', '/home/mywsl/.virtualenvs/venvname/lib/python3.10']
2. 使用正确的命令执行方式
推荐在项目根目录(包含manage.py的目录)执行启动命令,这样路径识别更清晰:
gunicorn -c myproject/gunicorn_config.py myproject.wsgi:application
如果坚持在内层myproject目录执行,确保配置文件的pythonpath已包含项目根目录,执行命令:
gunicorn -c gunicorn_config.py myproject.wsgi:application
原因解释
python manage.py runserver能正常运行,是因为manage.py会自动将项目根目录添加到Python的搜索路径中,让Django能识别到自身的项目模块。- 你之前的
pythonpath只配置了虚拟环境的库路径,缺少项目根目录,导致Gunicorn启动时无法找到myproject包。 - 在内层
myproject目录执行命令时,当前目录是包内部,Python默认不会向上搜索父目录的模块,必须通过pythonpath显式添加根目录。
内容的提问来源于stack exchange,提问作者lzlll3811
相关产品推荐
相关产品推荐

