使用Gunicorn部署Django网站时出现ImportError: No module named polls问题
解决Gunicorn启动Django时出现
ImportError: No module named polls的问题 看起来你遇到的是Gunicorn与Django项目路径不匹配的典型问题——runserver能正常运行,是因为Django的manage.py会自动把项目根目录加入Python的模块搜索路径,但Gunicorn默认不会做这件事,所以才找不到polls模块。下面是一步步的解决办法:
1. 先切换到项目根目录再执行Gunicorn命令
你的manage.py在/home/ragequittech/目录下,这才是项目的根目录。先切换到该目录,再启动Gunicorn:
cd /home/ragequittech/ gunicorn --bind 0.0.0.0:8030 wsgi:application
(注意你之前的命令里多写了一个ragequittech路径,这会让Gunicorn跑到子目录里找模块,自然找不到polls)
2. 确认激活了项目对应的虚拟环境
如果你的Django项目是用虚拟环境搭建的,一定要先激活虚拟环境再启动Gunicorn,否则Gunicorn会用系统默认的Python环境,可能根本没安装你的项目依赖:
# 假设你的虚拟环境在/home/ragequittech/venv/目录下 source /home/ragequittech/venv/bin/activate # 激活后再运行Gunicorn命令 gunicorn --bind 0.0.0.0:8030 wsgi:application
3. 手动把项目路径加入Python搜索路径
如果上面两步都没用,可以通过设置环境变量强制让Python找到你的项目:
PYTHONPATH=/home/ragequittech gunicorn --bind 0.0.0.0:8030 wsgi:application
或者直接修改项目根目录下的wsgi.py文件,在开头添加路径配置:
import sys # 把项目根目录加入Python的模块搜索路径 sys.path.append('/home/ragequittech') # 保留原来的WSGI代码 import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ragequittech.settings') application = get_wsgi_application()
4. 最后确认INSTALLED_APPS配置
虽然runserver能正常运行说明这个大概率没问题,但还是检查下settings.py里的INSTALLED_APPS是否正确包含了'polls',确保没有拼写错误:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', # 确认这一行存在且拼写正确 ]
按照上面的步骤操作,应该就能解决Gunicorn找不到polls模块的问题了。
内容的提问来源于stack exchange,提问作者Nicholas Peters
相关产品推荐
相关产品推荐

