2013-08-03 105 views
3

我想用Heroku部署一個相當基本的應用程序,之前我已經成功,但由於某種原因,現在我嘗試導入時出現錯誤。工頭開始工作沒有問題,但是當我嘗試啓動應用程序時,似乎發生了中斷導入的情況。這是日誌消息,我得到:燒瓶應用程序在heroku上失敗,但與工頭工作

heroku[web.1]: Starting process with command `python manage.py runserver -p 40309` 
app[web.1]: Traceback (most recent call last): 
app[web.1]: File "manage.py", line 6, in <module> 
app[web.1]: ImportError: No module named SpoolEngine 
app[web.1]:  from SpoolEngine import app 
heroku[web.1]: Process exited with status 1 
heroku[web.1]: State changed from starting to crashed 
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=tranquil-taiga-1563.herokuapp.com fwd="66.31.20.171" dyno= connect= service= status=503 bytes= 
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=tranquil-taiga-1563.herokuapp.com fwd="66.31.20.171" dyno= connect= service= status=503 bytes= 

這是我Procfile:

web: python manage.py runserver -p $PORT 

,這是manage.py文件我使用搞定一切:

import os, sys 
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 

from flask.ext.script import Manager, Server 
from SpoolEngine import app 

manager = Manager(app) 

manager.add_command("runserver", Server(
    use_debugger=True, 
    use_reloader=True, 
    host='0.0.0.0') 
) 

if __name__ == "__main__": 
    manager.run() 

我對不起,如果這是我所做的一些愚蠢的事情,但我對這個領域很陌生,並且非常感謝一些指點。

回答

2

這裏猜測:你的代碼顯示

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 

所以本地中安裝了manage.py的父目錄的封裝中,但是這不是在Heroku上的情況。

只是爲了調試,我還要補充

import sys 
print sys.path 

到manage.py的最頂端,和比較輸出。您可以在本地運行的輸出中查找模塊,然後查看heroku run bash並查看遠程運行打印的目錄中的內容。

+1

btw - 在部署到Heroku時,您確實需要小心(閱讀:避免)與調試器,是的?只是說':) –

+0

啊,非常感謝。這完全是它!也是的,我知道,這只是一個演示。 –

-1

我敢打賭,這是因爲你試圖運行內置的Flask開發服務器,而不是讓Heroku在正常的框架中運行它(我相信這很荒唐)。你不能同時運行。

試圖通過這些指令再閱讀:

https://devcenter.heroku.com/articles/python

,並嘗試擺脫manage.py腳本的 - 我不認爲你需要它。

+0

Heroku沒有一個「正常框架」,您鏈接的例子只是使用gunicorn(必須在Procfile中指定)顯示它們。這裏沒有涉及到gunicorn,但感謝您的答案。 –

相關問題