2013-07-07 9 views
10
nicht ausgeführt wird

ich nach dem Tutorial https://developers.google.com/appengine/docs/python/gettingstartedpython27/introductionGoogle App Engine Python 2.7 Tutorial

mein app.yaml ist:

application: myapp 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url:/
    script: helloworld.application 

und helloworld.py ist:

import webapp2 


class MainPage(webapp2.RequestHandler): 

    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.write('Hi') 


application = webapp2.WSGIApplication([ 
    ('/', MainPage), 
], debug=True) 

Die Protokollausgabe lautet:

*** Running dev_appserver with the following flags: 
    --skip_sdk_update_check=yes --port=10090 --admin_port=8001 
Python command: /usr/bin/python2.7 
Traceback (most recent call last): 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/dev_appserver.py", line 182, in <module> 
    _run_file(__file__, globals()) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/dev_appserver.py", line 178, in _run_file 
    execfile(script_path, globals_) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 695, in <module> 
    main() 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 688, in main 
    dev_server.start(options) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 525, in start 
    options.yaml_files) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 556, in __init__ 
    server_configuration = ServerConfiguration(yaml_path) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 82, in __init__ 
    self._yaml_path) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 272, in _parse_configuration 
    return appinfo_includes.ParseAndReturnIncludePaths(f) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/appinfo_includes.py", line 63, in ParseAndReturnIncludePaths 
    appyaml = appinfo.LoadSingleAppInfo(appinfo_file) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/appinfo.py", line 1715, in LoadSingleAppInfo 
    listener.Parse(app_info) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/yaml_listener.py", line 226, in Parse 
    self._HandleEvents(self._GenerateEventParameters(stream, loader_class)) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/yaml_listener.py", line 177, in _HandleEvents 
    raise yaml_errors.EventError(e, event_object) 
google.appengine.api.yaml_errors.EventError 

Ich bin auf einem Macbook Pro laufen, mit Python 2.7 Ich benutze den App-Engine-Launcher. Irgendwelche Ideen?

+0

Ist Ihre Ausnahme abgeschnitten? Ich denke, dass es eine Fehlermeldung geben sollte, die dem 'EventError'-Ausnahme-Namen in der letzten Zeile folgt. –

+0

Nein, es ist nicht abgeschnitten, das ist alles, was es sagt – user2558615

+0

Nach dem Speichern von app.yaml mit Text Wrangler gelang es mir, einen informativeren Fehler zu bekommen. 'google.appengine.api.yaml_errors.EventError: Unbekannter URL-Handlertyp. in „/ Users/Evan/helloworld/app.yaml ", Zeile 9, Spalte 1 ' – user2558615

Antwort

10

Ich erlebte das gleiche Problem auch. Es hat etwas mit der Dateicodierung zu tun, wenn Sie direkt von der Site kopieren. Vermeiden Sie dies und stellen Sie sicher, dass Ihre Datei die richtige Yaml-Codierung aufweist. Hier ist ein Beispiel, das Sie für die Datei app.yaml

application: your-app-id 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: helloworld.application 
+0

Ja, das war das Problem. Schließlich habe ich es herausgefunden, aber es war eine unglückliche Zeitverschwendung. Danke. – user2558615

+0

Sehr hilfreich. Danke !!! – jap1968

4

I cut-and-klebte app.yaml von Chrome in gnome-terminal, und bekam den gleichen Fehler zu erhalten begonnen. Schließlich habe ich app.yaml in vi geöffnet und festgestellt, dass es einen UTF-Textrichtungsanzeiger enthielt. Sobald ich das entfernte, fing alles an zu arbeiten.

Moral der Geschichte: Wenn Sie diesen Fehler sehen, überprüfen Sie Ihre app.yaml für schlechte Markup, schlechte Charaktere und alles andere schlecht. (Nicht DOS-Zeilenumbrüche - der Dev-Anwendungsserver bewältigt diese.)

1

Versuchen Sie, das Sonderzeichen vor der Anwendungszeile in app.yaml zu löschen. Es scheint nicht dort zu sein, aber navigieren Sie einfach mit dem Cursor zu der Position vor und drücken Sie dann die Rücktaste, um sie zu löschen.

8

In meinem Fall war das Problem die Einrückungsebene der "Skript" -Zeile.

Es war wie:

handlers: 
- url: /.* 
script: helloworld.php 

aber so sein sollte:

handlers: 
- url: /.* 
    script: helloworld.php 
+0

argh Python... –

0

auf Antwort @Fernando Basso abzuschließen, die richtige Absicht auf der Skriptzeile sollte zwei Räume, aber nicht eine Registerkarte, wie es als ein \ t Zeichen gelesen würde, die auch einen Fehler erzeugen würde.