推送零钱后,Heroku应用程序崩溃了。非常困惑


问题内容

我在Python和Flask中使用Heroku。在我更新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

我也不再能够通过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

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

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

但是,当我尝试查看库目录时,会得到如下信息:

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

我现在不确定该从哪里进行。我想念我的应用程序,请帮忙!

附加信息:

当我将以下行添加到我的app.py代码中时,所有问题都开始了:

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

当我推送代码时,该应用程序不再起作用。然后,我删除了这些代码行,再次推送了代码,仍然遇到相同的错误。我要做的下一件事是完全删除app.py文件,并尝试一个仍然无法正常工作的小型测试代码。

问题的根源似乎是错误:

 2012-10-03T17:51:26+00:00 app[web.1]: ImportError: No module named site

问题答案:

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

经过大量的实验,我最终在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

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

 2012-10-04T04:20:04+00:00 heroku[api]: Add PYTHONUNBUFFERED, PYTHONPATH, PYTHONHOME, LANG, LD_LIBRARY_PATH, PATH, PYTHONHASHSEED, LIBRARY_PATH config by ***@***

并检查我的环境变量:

 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

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

 heroku config:remove PYTHONPATH PYTHONHOME LANG LD_LIBRARY_PATH PYTHONHASHSEED LIBRARY_PATH

然后我的应用又开始工作了。我一直在推送更多代码,并且此问题不再发生。

我仍然很好奇为什么/为什么要首先添加这些变量,因为我所做的就是进行git push。