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)
我能够解决问题,但仍然不知道为什么它首先发生了!
经过大量的实验,我最终在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.
我昨天(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