Heroku应用程序在推动小改变后崩溃了.非常困惑

Cin*_*nna 6 python heroku flask

我正在使用Heroku与python和Flask.我的应用程序工作正常,直到我在我的python应用程序文件中更新了几行.该应用程序在本地运行正常,但我现在尝试访问我的应用程序时出现以下错误:

"应用程序中发生错误,无法提供您的页面.请稍后再试.如果您是应用程序所有者,请查看日志以获取详细信息."

我的日志看起来像这样:

2012-10-03T17:40:26+00:00 heroku[web.1]: Process exited with status 1
2012-10-03T17:40:26+00:00 heroku[web.1]: State changed from starting to crashed
2012-10-03T17:51:25+00:00 heroku[web.1]: State changed from crashed to starting
2012-10-03T17:51:26+00:00 heroku[web.1]: Starting process with command `python presentation.py`
2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

我也无法再通过heroku运行python:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run python
Running `python` attached to terminal... up, run.1
ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

我试图做的下一件事是检查我的环境变量:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku config
=== infinite-fortress-4866 Config Vars
LANG:             en_US.UTF-8 
LD_LIBRARY_PATH:  /app/.heroku/vendor/lib
LIBRARY_PATH:     /app/.heroku/vendor/lib
PATH:             /app/.heroku/venv/bin:/bin:/usr/local/bin:/usr/bin
PYTHONHASHSEED:   random
PYTHONHOME:       /app/.heroku/venv/
PYTHONPATH:       /app/
PYTHONUNBUFFERED: true
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试查看库目录时,我得到这样的东西:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run ls /app/.heroku/vendor/lib
Running `ls /app/.heroku/vendor/lib` attached to terminal... up, run.1
ls: cannot access /app/.heroku/vendor/lib: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我不知道此刻该在哪里继续.我想念我的应用程序,请帮忙!

附加信息:

当我在app.py代码中添加以下行时,问题全部开始了:

 @app.route('/my_fb_graph',methods=['GET','POST'])
 def my_fb_graph():
 return render_template('my_fb_graph.html')
Run Code Online (Sandbox Code Playgroud)

当我推送代码时,应用程序不再有效.然后我删除了这些代码行,再次推送代码,仍然得到相同的错误.我做的下一件事是完全删除app.py文件并尝试一个仍然无效的小测试代码.

问题的根源似乎是错误:

 2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

Cin*_*nna 6

我能够解决问题,但仍然不知道为什么它首先发生了!

经过大量的实验,我最终在Heroku上设置了一个全新的应用程序.我检查了新应用中的环境变量,得到了以下内容:

 Cinnas-MacBook-Pro:thawing-temple-4323 cinna$ heroku config
 === thawing-temple-4323 Config Vars
 FACEBOOK_APP_ID:  ***
 FACEBOOK_SECRET:  ***
 PATH:             bin:/usr/local/bin:/usr/bin:/bin
 PYTHONUNBUFFERED: true
Run Code Online (Sandbox Code Playgroud)

检查我的原始应用程序(已损坏的应用程序),我意识到在我的上一次推送中以某种方式添加了新的环境变量,如我的日志所示:

 2012-10-04T04:20:04+00:00 heroku[api]: Add PYTHONUNBUFFERED, PYTHONPATH, PYTHONHOME, LANG, LD_LIBRARY_PATH, PATH, PYTHONHASHSEED, LIBRARY_PATH config by ***@***
Run Code Online (Sandbox Code Playgroud)

并通过检查我的环境变量:

 Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku config
 === infinite-fortress-4866 Config Vars
 LANG:             en_US.UTF-8 
 LD_LIBRARY_PATH:  /app/.heroku/vendor/lib
 LIBRARY_PATH:     /app/.heroku/vendor/lib
 PATH:             /app/.heroku/venv/bin:/bin:/usr/local/bin:/usr/bin   
 PYTHONHASHSEED:   random
 PYTHONHOME:       /app/.heroku/venv/
 PYTHONPATH:       /app/
 PYTHONUNBUFFERED: true
Run Code Online (Sandbox Code Playgroud)

我用命令删除了这些新变量:

 heroku config:remove PYTHONPATH PYTHONHOME LANG LD_LIBRARY_PATH PYTHONHASHSEED LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

我的应用程序又开始工作了.我一直在推动更多的代码,这个问题再也没有发生过了.

我仍然很好奇为什么/如何在第一时间添加这些变量,因为我所做的就是做一个git push.


Cra*_*any 6

我昨天(2012年12月6日)经历了一个非常类似的问题.出乎意料的是,每次python调用都以'ImportError:No module named site'而死亡.Heroku的支持今天又回到了我的身边,他们说它已经修复了,所以不需要以下的解决方法.我会把它留在这里,以防它帮助别人诊断.

我检查了我的heroku配置变量,但没有设置PYTHON*变量.它们在shell级别被设置为env vars:

$ heroku run set | grep PYTHON
PYTHONHASHSEED=random
PYTHONHOME=/app/.heroku/venv/
PYTHONPATH=/app/
PYTHONUNBUFFERED=true 
Run Code Online (Sandbox Code Playgroud)

/app/.heroku/venv是一个不存在的目录.如果我用配置变量覆盖PYTHONHOME,并指出我的virtualenv实际上是在哪里,那一切都重新开始了:

$ heroku config:set PYTHONHOME=/app
Run Code Online (Sandbox Code Playgroud)

/ app似乎是项目根目录的挂载点.深入了解Python buildpack的历史,看起来当我开始我的项目时,每个人都在项目根目录中创建了virtualenvs.现在,新项目在venv /子目录中创建了virtualenvs.支持说他们正在逐步推出一个buildpack更改,我想对旧的做事方式的检查并没有对我有所帮助.

这里是寻找buildpack内部的地方:https: //github.com/heroku/heroku-buildpack-python/blob/master/bin/compile