我有我的项目基于django startproject: https://github.com/lincolnloop/django-startproject/
这是我的个人档案:
web: gunicorn <myproject>.wsgi:application
现在我的设置是这样的:
[myproject]
——[设计]
——(本地)
——settings.py
——(qa)
---------settings.py
——[server_configs]
——(本地)
——django。wsgi
——(qa)
——django。wsgi
我的django。Wsgi是这样的:
import os
import sys
import django.core.handlers.wsgi
sys.path.append('/app')
sys.path.append('/app/myproject')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.conf.qa.settings'
application = django.core.handlers.wsgi.WSGIHandler()
我想使用qa/django。wsgi为Heroku,但我得到一个错误说:
importterror: No module named [myproject].wsgi
我已经在这篇文章中尝试了一些解决方案:在Heroku上为Django配置gunicorn,但我没有运气。
现在我的PYTHONPATH是/app,并且已经尝试了Gunicorn+Django+Heroku。Python路径问题也没有运气
我曾经遇到过类似的问题。基本上,您正在从根目录运行gunicorn,但是您的wsgi在[my_project]/[server_configs]/[qa]/
中。
有两种方法。如果这些目录中的每一个都有一个init.py文件,您可以像调用普通python模块一样调用它。用途:
web: gunicorn [myproject].[server_configs].[qa].django.wsgi:application
如果他们没有init.py文件(我没有),您将需要Procfile切换到适当的目录。试一试:web: sh -c 'cd [server_configs]/[qa] && gunicorn django.wsgi:application'
基本上,这是在shell中运行命令来(1)更改目录,(2)运行gunicorn.
Heroku允许您在Procfile中使用环境变量。如果你在Heroku上定义了一个环境变量,像这样:heroku config:set WSGI_PATH=path/to/my/file/wsgi.py
,那么在你的Procfile中:gunicorn $WSGI_PATH:application
就可以了!