2014-03-27 119 views
0

我已經基於Django的startproject命令我的項目:https://github.com/lincolnloop/django-startproject/Django和gunicorn:指定路徑django.wsgi環境特定的文件夾文件的Heroku

這裏是我的procfile:

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的,但我得到一個錯誤說:

導入錯誤:未命名模塊[myproject的] .wsgi

我已通過本已經走了,並試圖解決方案帖子:Configuring gunicorn for Django on Heroku但我的結局沒有運氣。

現在我的PYTHONPATH是/ app,並且已經嘗試Gunicorn+Django+Heroku. Python Path Issue也沒有運氣。

+1

gunicorn WSGI服務器不支持任意命名的文件作爲WSGI腳本文件。它只會接受一個可導入模塊的文件。因此它必須有一個.py擴展名。 –

+0

切換到使用wsgi.py文件,並得到該網站至少進展到下一個錯誤:) – Sam

+0

網站啓動並運行 - 將wsgi.py文件移動到conf/qa和conf/local下,然後將其用於我的procfile:web:gunicorn conf.qa.wsgi:應用程序。謝謝您的幫助! – Sam

回答

2

我曾經有過類似的問題。基本上,你從你的根目錄運行gunicorn,但你的wsgi在[my_project]/[server_configs]/[qa]/

有兩種方法可以解決這個問題。如果這些目錄中的每一個都有init .py文件,則可以將它稱爲正常的python模塊。用途:

web: gunicorn [myproject].[server_configs].[qa].django.wsgi:application 

如果他們沒有初始化 .py文件(我沒有),你需要你的Procfile切換到正確的目錄。嘗試:

web: sh -c 'cd [server_configs]/[qa] && gunicorn django.wsgi:application' 

基本上這是在你的shell中運行一個命令來(1)改變目錄和(2)運行gunicorn。

+0

仍然出現錯誤:ImportError:沒有名爲wsgi的模塊。這是使用你對shell的建議。 – Sam

+0

只是想說,第二個選項,cd到正確的目錄,爲我工作。謝謝! (對於不明顯的任何人,你不應該在路徑中的元素周圍有[square_brackets])。 –

1

Heroku允許您在Procfile中使用環境變量。如果你在Heroku上定義了一個環境變量,像這樣:heroku config:set WSGI_PATH=path/to/my/file/wsgi.py,那麼在你的Procfile中:gunicorn $WSGI_PATH:application你應該很好走!

相關問題