我将 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
我也不再能够通过 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。
关于python - Heroku 应用程序在推送小更改后崩溃。非常困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717903/