Seite 1 von 1

Bottle in Verbindung mit Google Appengine

Verfasst: Sonntag 1. November 2009, 12:16
von snafu
Ich habe Startschwierigkeiten mit Googles Appengine, wenn ich ihr Bottle als WSGI-kompatible Klasse übergebe. Ich hab's doch richtig verstanden (bin neu in dem Bereich), dass ich Bottle-Syntax verwenden kann, oder? Demnach müsste doch das gehen:

Code: Alles auswählen

from bottle import default_app, route
from google.appengine.ext.webapp.util import run_wsgi_app

@route('/')
def hello():
    return 'Hello world'

if __name__ == '__main__':
    run_wsgi_app(default_app())
Doch ich erhalte eine Fehlermeldung:

Code: Alles auswählen

ERROR    2009-11-01 11:17:48,897 dev_appserver.py:3009] Exception encountered handling request
Traceback (most recent call last):
  File "/home/seblin/google_appengine/google/appengine/tools/dev_appserver.py", line 2978, in _HandleRequest
    base_env_dict=env_dict)
  File "/home/seblin/google_appengine/google/appengine/tools/dev_appserver.py", line 411, in Dispatch
    base_env_dict=base_env_dict)
  File "/home/seblin/google_appengine/google/appengine/tools/dev_appserver.py", line 2244, in Dispatch
    self._module_dict)
  File "/home/seblin/google_appengine/google/appengine/tools/dev_appserver.py", line 2162, in ExecuteCGI
    reset_modules = exec_script(handler_path, cgi_path, hook)
  File "/home/seblin/google_appengine/google/appengine/tools/dev_appserver.py", line 2058, in ExecuteOrImportScript
    exec module_code in script_module.__dict__
  File "/home/seblin/google_appengine/helloworld/helloworld.py", line 1, in <module>
    from bottle import default_app, route
ImportError: No module named bottle
Bottle selbst ist über `easy_install` installiert und kann demnach eigentlich aus jedem beliebigen Verzeichnis importiert werden. Deshalb verstehe ich die Meldung nicht. Das Ganze läuft natürlich noch nicht über Google, sondern bei mir lokal auf Port 8080.

EDIT: Also doch. Den Grund verstehe ich an sich schon. Es ist offenbar in dem Kontext (Dictionary) von `script_module` kein `bottle` vorhanden. Die Frage ist nur, wie man das behebt, möglichst ohne im Code von Google zu pfuschen.

Verfasst: Sonntag 1. November 2009, 15:41
von DasIch
Pack den Code von bottle mit in dein Projekt, genauso wie du es später fürs hochladen machen müsstest.

Verfasst: Sonntag 1. November 2009, 15:46
von snafu
Das macht durchaus Sinn... Danke. :)

Verfasst: Sonntag 1. November 2009, 18:40
von Defnull
Kann es sein, das Google absichtlich verhindert, das man Module einbindet, die weder von Google angeboten noch lokal im selben Verzeichnis liegen, um Ärger nach dem hoch laden zu vermeiden?

Verfasst: Sonntag 1. November 2009, 19:39
von Dav1d
keine Ahnung, allerdings funktioniert bei mir bottle mit der GoogleAppEngine