我的项目基于django startproject:https://github.com/lincolnloop/django-startproject/
这是我的procfile:
web: gunicorn <myproject>.wsgi:application
现在我的设置如下:
[myproject的]
--- [CONF]
------ [本地]
---------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,但我收到错误消息:
ImportError:没有名为[myproject] .wsgi
的模块我已经完成了这篇文章中的解决方案:Configuring gunicorn for Django on Heroku但我的运气没有运气。
现在我的PYTHONPATH是/ app并且已经尝试了Gunicorn+Django+Heroku. Python Path Issue而没有运气。
答案 0 :(得分:2)
我曾遇到过类似的问题。基本上,你从你的根目录运行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。
答案 1 :(得分:1)
Heroku允许您在Procfile中使用环境变量。如果你在Heroku上定义一个环境变量,如下所示:heroku config:set WSGI_PATH=path/to/my/file/wsgi.py
,那么在你的Procfile中执行:gunicorn $WSGI_PATH:application
你应该好好去!