2013-07-07 1 views
10

Obserwuję samouczka na https://developers.google.com/appengine/docs/python/gettingstartedpython27/introductionApp Engine Python 2.7 poradnik Google nie będzie działać

moim app.yaml jest:

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

handlers: 
- url:/
    script: helloworld.application 

i helloworld.py jest:

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) 

Dane wyjściowe dziennika:

*** 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 

Używam programu macbook pro, używając python 2.7 Używam launchera mechanizmu aplikacji. Jakieś pomysły?

+0

Czy Twój wyjątek został obcięty? Myślę, że powinien pojawić się komunikat o błędzie po nazwie wyjątku "EventError" w ostatnim wierszu. –

+0

Nie to nie jest odcięte, to wszystko, co mówi – user2558615

+0

Po zapisaniu app.yaml z tekstem wrangler udało mi się uzyskać bardziej informacyjny błąd. 'google.appengine.api.yaml_errors.EventError: Nieznany typ procedury url. w "/ Users/Evan/helloworld/app.yaml ", wiersz 9, kolumna 1 ' – user2558615

Odpowiedz

10

Doświadczyłem tego samego problemu. Ma to coś wspólnego z kodowaniem plików podczas kopiowania bezpośrednio ze strony. Unikaj tego i upewnij się, że twój plik ma odpowiednie kodowanie yaml. Oto przykład, jak zacząć grę dla pliku app.yaml

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

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

Tak, to był problem, w końcu udało mi się go znaleźć, ale było to niefortunne marnowanie czasu, dziękuję – user2558615

+0

Bardzo pomocna.Dziękuję! – jap1968

4

I cut-and-wklejane app.yaml z Chrome w gnome-terminal i dostał ten sam błąd. Ostatecznie otworzyłem app.yaml w vi i odkryłem, że zawiera znacznik kierunku tekstu UTF. Jak tylko usunąłem to, wszystko zaczęło działać.

Morał z opowieści: jeśli widzisz ten błąd, sprawdź plik app.yaml pod kątem złych oznaczeń, złych postaci i wszystkiego, co złe. (Nie dotyczy to jednak nowych linii DOS - programista programisty radzi sobie z nimi.)

1

Spróbuj usunąć znak specjalny przed linią aplikacji w pliku app.yaml. Wygląda na to, że tak nie jest, ale po prostu przesuń kursor na pozycję przed a następnie naciśnij klawisz Backspace, aby go usunąć.

8

W moim przypadku problemem był poziom wcięcia linii "skryptu".

Było tak:

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

ale powinno być tak:

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

arrgh pyton... –

0

Aby ukończyć na odpowiedź @Fernando Basso, właściwa intencja na linii skryptu powinny być dwa miejsca, ale nie zakładkę, ponieważ byłaby czytana jako znak \ t, który również generowałby błąd.