heroku上的gunicorn导入错误

Jos*_*eph 12 python wsgi heroku flask gunicorn

我不能用简单的烧瓶应用程序在heroku上运行gunicorn应用程序非常简单,这个app.py

app = Flask(__name__)

@app.route("/")
def say_hello(url):
    return "Hello"


if __name__ == "__main__":
    port = int(os.environ.get('PORT', 8888))
    app.run(host='0.0.0.0',port=port)
Run Code Online (Sandbox Code Playgroud)

当我切换到使用gunicorn它崩溃时,应用程序在heroku上烧瓶测试服务器正常工作:

ImportError: No module named app.wsgiapp
Run Code Online (Sandbox Code Playgroud)

我的requirements.txt:

Flask==0.8
gevent==0.13.7
gunicorn==0.13.2
Run Code Online (Sandbox Code Playgroud)

我尝试了从0.13.7到0.14.6的不同版本的gunicorn但没有成功

Procfile:

web: gunicorn app:app -w 4 -b 0.0.0.0:$PORT
Run Code Online (Sandbox Code Playgroud)

运行命令:

heroku logs
Run Code Online (Sandbox Code Playgroud)

?[33m2012-08-09T21:08:02+00:00 app[web.1]:?[0m ImportError: No module named app.
wsgiapp ?[33m2012-08-09T21:08:02+00:00 app[web.1]:?[0m     entry = __import__(self.modul
e_name, globals(),globals(), ['__name__'])
Run Code Online (Sandbox Code Playgroud)

请帮忙

谢谢

小智 10

在我的情况下,我通过gunicorn.py在顶级文件夹中有一个文件来解决此错误.这与Heroku上安装的gunicorn库发生了冲突.

所以导致问题的运行命令是:

gunicorn -c gunicorn.py myapp:main
Run Code Online (Sandbox Code Playgroud)

引发以下错误:

Traceback (most recent call last):
  File "/app/.heroku/python/bin/gunicorn", line 9, in <module>
    load_entry_point('gunicorn==18.0', 'console_scripts', 'gunicorn')()
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named app.wsgiapp
Run Code Online (Sandbox Code Playgroud)

经过一段mv gunicorn.py gunicorn_config.py时间后,它可以正常使用:

gunicorn -c gunicorn_config.py myapp:main
Run Code Online (Sandbox Code Playgroud)


gwi*_*wik 1

我的猜测是Python路径中还有另一个“app”模块(gunicorn和flask都已经有一个名为app的模块)。将其重命名为 app.py 以外的任何名称,它应该可以工作。

  • 你能在 repr(app) 崩溃之前记录一个 PYTHON_PATH 环境变量吗? (2认同)