2012-10-03 6 views
5

Ich benutze Heroku mit Python und Flask. Meine App funktionierte einwandfrei, bis ich ein paar Zeilen in meiner Python-Anwendungsdatei aktualisiert habe. Die App läuft lokal einwandfrei. Beim Versuch, auf meine App zuzugreifen, erhalte ich jetzt folgende Fehlermeldung:Heroku App stürzte nach dem Drücken kleine Änderung ab. Sehr verwirrt

"In der Anwendung ist ein Fehler aufgetreten und Ihre Seite konnte nicht bedient werden. Bitte versuchen Sie es in Kürze wieder. Wenn Sie der Eigentümer der Anwendung sind, überprüfen Sie Ihre Protokolle auf Details. "

Meine Protokolle in etwa so aussehen:

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 

Ich bin auch nicht mehr in der Lage Python durch Heroku auszuführen:

Cinnas-MacBook-Pro:infinite-fortress-4866 cinna$ heroku run python 
Running `python` attached to terminal... up, run.1 
ImportError: No module named site 

Das nächste, was ich versucht habe, ist meine Umgebung zu tun überprüfen Variablen:

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 

Allerdings, wenn ich versuche, in die lib zu schauen rary Verzeichnisse, bekomme ich etwas wie folgt:

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 

Ich bin mir nicht sicher, wo in diesem Moment zu gehen. Ich vermisse meine App, bitte helfen!

Zusätzliche Informationen:

Die Probleme beginnen alles, als ich die folgenden Zeilen zu meinem app.py Code hinzugefügt:

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

Als ich schob den Code und die App nicht mehr funktionieren. Ich entfernte dann diese Codezeilen, schob den Code erneut und bekam immer noch die gleichen Fehler. Das nächste, was ich tat, war, die app.py-Datei vollständig zu entfernen und einen kleinen Testcode zu versuchen, der immer noch nicht funktionierte.

Die Wurzel des Problems scheint der Fehler zu sein:

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

Sie mit der Beschreibung genau beginnen könnte, was die Änderung, die Sie war –

+0

, wenn Sie gemacht ändere es zurück funktioniert es wieder? Wenn ja, ist wahrscheinlich ein Fehler in Ihrer Änderung ... –

+0

Danke für die Kommentare, ich habe ein paar weitere Informationen hinzugefügt. Ich habe es nicht nur geändert, ich habe versucht, die app.py vollständig zu entfernen und einen kleinen Testcode auszuführen. – Cinna

Antwort

6

Ich war in der Lage, das Problem zu beheben, aber wissen noch nicht, warum es in erster Linie aufgetreten!

Nach vielen Experimenten habe ich eine komplett neue App auf Heroku eingerichtet. Ich überprüfte die Umgebungsvariablen in der neuen App und bekam die folgende:

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 

Überprüfung meiner ursprünglichen app (die gebrochen), erkannte ich, dass neue Umgebungsvariablen in meinem letzten Push irgendwie hinzugefügt wurden, wie durch meine Protokolle angegeben:

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

und durch meine Umgebungsvariablen Überprüfung:

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 

ich diese neuen Variablen mit dem Befehl entfernt:

heroku config:remove PYTHONPATH PYTHONHOME LANG LD_LIBRARY_PATH PYTHONHASHSEED LIBRARY_PATH 

und meine App begann wieder zu arbeiten. Ich habe mehr Code gedrängt, und dieses Problem ist nicht wieder aufgetreten.

Ich bin immer noch wirklich neugierig, warum/wie diese Variablen in erster Linie hinzugefügt wurden, da alles, was ich tat, war ein git push.

+0

Danke dafür! Nebenfrage: Wie haben Sie Ihre Protokolle bekommen? Der einzige Befehl, den ich kenne, ist 'Heroku Logs', gibt es noch andere? –

+0

Das funktionierte auch für mich, also danke! Ich denke, dass meine App-Konfiguration ziemlich alt ist? –

6

Ich hatte gestern ein sehr ähnliches Problem (6. Dez. 2012). Aus heiterem Himmel starb jeder Python-Aufruf mit 'ImportError: Kein Modul namens Site'. Die Unterstützung von Heroku kam heute zu mir zurück und sie sagen, dass sie an ihrem Ende behoben ist. Daher sollte die folgende Problemumgehung nicht erforderlich sein. Ich werde das hier lassen, falls es jemand anderem bei der Diagnose hilft.

Ich habe meine heroku config vars überprüft, und es wurden keine PYTHON * Variablen gesetzt. Sie wurden eingestellt, wie env an der Shell-Ebene Vars aber:

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

/app/.heroku/venv ein nicht existierendes Verzeichnis war. Wenn ich PYTHON mit einem Config var overrode und zeigte auf, wo mein virtualenv tatsächlich war, alles begann es wieder zu arbeiten:

$ heroku config:set PYTHONHOME=/app 

/app ein Mount-Punkt zu sein für das Projekt Stammverzeichnis erscheint. Wenn ich mir die Geschichte des Python-Buildpacks anschaue, sieht es so aus, als wenn ich mein Projekt gestartet habe. Alle haben ihre Virtualenvs im Projektstamm erstellt. Jetzt machen neue Projekte virtualenvs in einem venv/Unterverzeichnis. Support sagte, dass sie nach und nach einen Buildpack-Wechsel einführten, und ich denke, die Überprüfungen für die alte Art, Dinge zu tun, kamen mir nicht in den Sinn.

Hier, wo für die buildpack Interna suchen: https://github.com/heroku/heroku-buildpack-python/blob/master/bin/compile

+0

Prost, das hat für mich funktioniert! –

+0

Hatte das gleiche Problem, heute, danke. –

+0

Versuchte dies ... funktioniert nicht. Ich benutze virtualenvwrapper ... würde das bewirken? – zakdances

1

Das hat mich gebissen, auch. Ich bin mir nicht sicher, wann es angefangen hat. Ich glaube nicht, dass es in Reaktion auf eine Änderung von mir war, ich habe gerade bemerkt, Anwendungsfehler auf meinem site heute, und fand diese in den Protokollen:

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 

ich eine andere Veröffentlichung bereit war zu gehen, so dass ich gerade wie üblich eingesetzt. Nach einer git push heroku ist die Website wieder verfügbar. Mein heroku config nicht über die zusätzlichen envvars oben aufgeführt:

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

Update: @kennethreitz pointed me zu this:

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).

Verwandte Themen