3

我正在尝试使用 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()

如果这是我所做的愚蠢的事情,我很抱歉,但我对这个领域很陌生,非常感谢一些指示。

4

2 回答 2

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查看远程运行打印的目录中的内容。

于 2013-08-04T06:14:12.717 回答
-1

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

尝试再次阅读这些说明:

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

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

于 2013-08-03T21:56:03.377 回答