Django多应用项目Procfile配置(保留原始目录结构)
解决Django多层目录下Procfile的配置问题
核心思路
不用修改wsgi.py里的DJANGO_SETTINGS_MODULE配置,也不用调整原有目录结构,只需要让Gunicorn运行时能识别到Django项目的根目录(即包含manage.py的expenses文件夹)即可。
正确的Procfile配置方案
你有两种可选的配置方式:
- 切换到项目根目录后启动Gunicorn
把Procfile内容改成:
web: cd expenses && gunicorn expenses.wsgi --log-file -
Gunicorn会先进入包含manage.py的expenses目录,此时Python会自动把这个目录加入模块搜索路径,既能找到内层expenses里的wsgi.py,也能识别同级的finances应用。
- 通过PYTHONPATH指定项目根目录
如果不想切换目录,可以用环境变量指定Python的模块搜索路径:
web: PYTHONPATH=expenses gunicorn expenses.wsgi --log-file -
这个命令会把外层expenses目录(含manage.py的那个)加入Python的模块搜索路径,效果和第一种方法一致。
为什么之前的做法会出错
你之前修改wsgi.py里的DJANGO_SETTINGS_MODULE为expenses.expenses.settings,相当于把内层的expenses文件夹当作了Python的顶层模块目录,但finances应用是和内层expenses同级的,并不在它的子目录下,所以Django无法找到finances模块。而保持原有的expenses.settings配置,是基于项目根目录(含manage.py)的模块路径,这才是Django默认的正确路径。
内容的提问来源于stack exchange,提问作者Andresfgc
相关产品推荐
相关产品推荐

