我的问题类似于Flask and Gunicorn on Heroku import error和Procfile gunicorn custom module name,但我似乎无法使用他们的解决方案来修复它。
My Flask应用程序具有以下结构:
appname/
run.py
Procfile
venv/
...
appname/
app.py
views.py
run.py:
from appname import app
app.run(debug=True)
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "here"
Procfile:
web: gunicorn --pythonpath appname app:app
views.py:
from appname import app
from flask import render_template
@app.route('/there')
def there():
return "there"
以前,我在运行foreman start
时遇到了错误,但是当我从import appname.views
移除app.py
后,这些就消失了。
现在,foreman start
运行应用,路由/
可访问,但/there
不可访问。怎么来的?
答案 0 :(得分:3)
万岁!我已经能够使用我真正想要的代码了。
app结构(未更改):
appname/
run.py
Procfile
venv/
...
appname/
app.py
views.py
run.py(未更改):
from appname import app
app.run(debug=True)
<强> app.py:强>
from flask import Flask
app = Flask(__name__)
import appname.views
import appname.anothermodule
<强> Procfile:强>
web: gunicorn appname:app
views.py(未更改):
from appname import app
@app.route('/')
def home():
return "Hello, awesomeness!"
答案 1 :(得分:1)
我已经能够通过以下方式“解决”这个问题:
from appname import app
run.py
app.py
我宁愿用我的模块保留我的路线,虽然我不确定哪种是更好的Python风格。