Flask App在heroku上失败,但与领班合作

时间:2013-08-03 20:33:01

标签: python heroku flask foreman

我正在尝试使用Heroku部署一个相当基本的应用程序,之前我已经成功了,但出于某种原因,我现在尝试时遇到导入错误。 Foreman开始工作没有任何问题,但是当我尝试启动应用程序时,似乎发生了一些破坏导入的事情。这是我收到的日志消息:

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 个答案:

答案 0 :(得分: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 :(得分:-1)

我敢打赌,因为你试图运行内置的Flask开发服务器,而不是让Heroku在他们的正常框架中运行它(我相信这是枪手)。你不能同时运行。

请再次阅读这些说明:

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

并尝试摆脱manage.py脚本 - 我认为你不需要它。