我今天早些时候在Heroku deploy problem发布了一个问题。
我有很多好的建议,但无法让我的应用程序部署在Heroku上。
我已将应用程序剥离为15行代码。该应用仍然拒绝部署。
这是错误:
ImportError: No module named 'main'
File "/app/.heroku/python/bin/gunicorn", line 11, in <module>
sys.exit(run())
WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
这是我的应用程序目录:
这是Procfile
:
web: gunicorn main:app --log-file=-
这是main.py文件的内容:
import os
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
app.config.from_pyfile('config.py')
@app.route('/')
def hello():
return 'Hello World!'
if __name__ == '__main__':
# REMEMBER: Never have this set to True on Production
# manager.run()
app.run()
我已经按照所有教程,阅读了模块和软件包,在本网站上看到了建议,阅读了Explore Flask和The Official Flask文档。他们都有一些建立应用程序的变体,很难理解什么是正确的方式或文件应该在哪里。
答案 0 :(得分:0)
您的示例代码中存在几个问题:
在proc文件中没有名为&#39; main&#39;
的模块
,你说:main.py
。正确的方法是在web: gunicorn blackduckflock.main:app --log-file=-
旁边添加instance_relative_config=True
,因此python知道这是一个包。将您的proc文件编辑为:
blackduckflock
├── blackduckflock
│ ├── __init__.py
│ └── main.py
├── config.py
├── instance
│ └── config.py
└── Procfile
由于您指定gunicorn blackduckflock.main:app
,我认为正确组织项目的方式如下:
{{1}}
您可以运行{{1}}以查看它是否有效。