Heroku的应用程序在推小改后崩溃。非常困惑

问题描述:

我用Python和Flask使用Heroku。我的应用程序工作正常,直到我更新了我的python应用程序文件中的几行。该应用程序运行正常在本地,但我现在有以下错误,当我尝试访问我的应用程序:。Heroku的应用程序在推小改后崩溃。非常困惑

“发生在应用程序中的错误,你的页面无法送达,请在稍后重试 如果您是应用程序所有者,请查看日志以了解详细信息。“

我的日志是这个样子:

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 

但是,当我尝试查看里面的lib rary目录,我得到这样的东西:

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 
+0

你可以通过描述正是你所做的改变是 –

+0

,如果你开始改回它是否再次工作?如果是的话,您的更改可能会有错误... –

+0

感谢您的评论,我添加了一些更多信息。我不仅改变了它,我试图完全删除app.py并运行一个小测试代码。 – Cinna

我能解决这个问题,但仍然不知道它为什么发生在首位!

经过很多实验,我最终在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 

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

我还是很好奇,为什么/如何将这些变量被摆在首位,因为我所做的添加是做一个混帐推。

+0

感谢您的支持!旁边的问题:你是如何得到你的日志?我知道的唯一命令是'heroku logs',还有其他的吗? –

+0

这也适用于我,所以谢谢你!我猜我的应用配置是相当古老的? –

昨天我遇到了一个非常类似的问题(2012年12月6日)。突然之间,每个python调用都因'ImportError:No module named site'而死亡。 Heroku的支持今天回复给我,他们说它已经固定在他们的最后,所以下面的解决方法不应该被要求。如果它帮助别人诊断,我会在这里留下。

我检查了我的Heroku配置瓦尔虽然,有没有设定PYTHON *变量。

$ heroku run set | grep PYTHON 
PYTHONHASHSEED=random 
PYTHONHOME=/app/.heroku/venv/ 
PYTHONPATH=/app/ 
PYTHONUNBUFFERED=true 

/app/.heroku/venv是一个不存在的目录:他们为ENV在shell水平瓦尔虽然分别设置。如果我推翻PYTHONHOME与配置变种,并指出到我的virtualenv实际上是,这一切都开始工作了:

$ heroku config:set PYTHONHOME=/app 

/应用似乎是一个安装点项目的根目录。挖掘Python buildpack的历史,看起来当我开始我的项目时,每个人都在项目根目录中创建了他们的virtualenvs。现在新项目将venualenvs放置在venv /子目录中。支持者表示,他们正在逐步推出buildpack的改变,而且我认为检查旧的做事方式并没有为我提供帮助。

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

+0

干杯,为我工作! –

+0

今天有同样的问题,谢谢。 –

+0

试过这个...不起作用。我正在使用virtualenvwrapper ...会影响它吗? – zakdances

这咬我了。我不确定何时开始。我不相信这是响应我的一部分的任何变化,我只注意到应用程序错误今天我site,并发现了这个在日志中:

2012-12-12T16:02:06+00:00 heroku[web.1]: State changed from crashed to starting 
2012-12-12T16:02:09+00:00 heroku[web.1]: Starting process with command `aspen --network_address=:40856 --www_root=doc/ --project_root=doc/.aspen` 
2012-12-12T16:02:10+00:00 app[web.1]: ImportError: No module named site 
2012-12-12T16:02:11+00:00 heroku[web.1]: Process exited with status 1 
2012-12-12T16:02:11+00:00 heroku[web.1]: State changed from starting to crashed 

我有另一个版本准备好了,所以我只是像往常一样部署。在git push heroku之后,该网站已备份。我heroku config没有上面列出的额外envvars中:

$ heroku config 
=== aspen-io Config Vars 
ASPEN_IO_SHOW_GA: yes 
PATH:    bin:/usr/local/bin:/usr/bin:/bin 
PYTHONUNBUFFERED: true 

更新: @kennethreitz pointed methis

Cannot import module site

This occurs when the configured environment variables don't match the paths of the installed Python. When this occurs, it is because someone purged an app's cache without understanding the above implications.

To fix, either purge the cache and update the configuration, or restore the expected configurations (preferred).