我正在尝试使用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()
我很抱歉,如果这是我做过的傻事,但我对这个领域很陌生,并且非常感谢一些指示。
答案 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脚本 - 我认为你不需要它。