2013-07-07 2 views
10

я после учебник на https://developers.google.com/appengine/docs/python/gettingstartedpython27/introductionGoogle App Engine Python 2.7 учебник не будет работать

мой app.yaml является:

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

handlers: 
- url:/
    script: helloworld.application 

и helloworld.py является:

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) 

Выход журнала:

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

Я работаю на macbook pro, используя python 2.7 Я использую программу запуска приложений. Есть идеи?

+0

Является ли ваше исключение отрезанным? Я думаю, должно быть сообщение об ошибке после имени исключения EventError в последней строке. –

+0

Нет, это не отрезано, вот и все, что сказано – user2558615

+0

После сохранения app.yaml с текстовым wrangler мне удалось получить более информативную ошибку. 'google.appengine.api.yaml_errors.EventError: Неизвестный тип обработчика URL. в категории "/ Пользователи/Evan/helloworld/app.yaml ", строка 9, столбец 1 ' – user2558615

ответ

10

У меня тоже была такая же проблема. Это связано с кодировкой файла при копировании непосредственно с сайта. Избегайте этого и убедитесь, что ваш файл имеет правильную кодировку yaml. Вот пример, чтобы вы начали для app.yaml файла

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

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

Да, это была проблема. В конце концов я понял, но это была неудачная трата времени. Спасибо. – user2558615

+0

Очень полезно. Спасибо !!! – jap1968

4

Я вырезать и вставить app.yaml из Chrome в гном-терминал, и получил ту же ошибку. В конце концов я открыл app.yaml в vi и обнаружил, что он содержит маркер направления текста UTF. Как только я удалил это, все приступило к работе.

Мораль истории: если вы видите эту ошибку, проверьте свой app.yaml на предмет плохой разметки, плохих символов и всего остального. (Но не DOS-новые строки - разработчик приложений работает с ними.)

1

Попробуйте удалить специальный символ до строки приложения в app.yaml. Кажется, это не так, но просто переместите курсор на позицию до того, как вы нажмете назад, чтобы удалить его.

8

В моем случае проблема заключалась в уровне отступов линии «сценарий».

Это было как:

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

, но должно быть так:

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

arrgh питон ... –

0

Чтобы закончить на ответ @Fernando Бассо, правильное намерение на линии сценария должно быть два пробела, но не вкладку, поскольку она будет считана как символ \ t, который также будет генерировать ошибку.