10

我正在关注https://developers.google.com/appengine/docs/python/gettingstartedpython27/introduction上的教程

我的 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 我正在使用应用程序引擎启动器。有任何想法吗?

4

5 回答 5

10

我也遇到了同样的问题。当您直接从站点复制时,它与文件编码有关。避免这样做并确保您的文件具有正确的 yaml 编码。这是一个让您开始使用 app.yaml 文件的示例

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

handlers:
- url: /.*
  script: helloworld.application
于 2013-07-11T13:58:18.293 回答
8

就我而言,问题是“脚本”行的缩进级别。

这就像是:

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

但应该是这样的:

handlers:
 - url: /.*
   script: helloworld.php
于 2013-11-02T15:05:39.540 回答
4

我将 app.yaml 从 Chrome 剪切并粘贴到 gnome-terminal 中,得到了同样的错误。最终我在 vi 中打开 app.yaml,发现它包含一个 UTF 文本方向标记。一旦我删除它,一切都开始工作了。

故事的寓意:如果您看到此错误,请检查您的 app.yaml 是否有错误的标记、错误的字符以及其他任何错误。(虽然不是 DOS 换行 - 开发应用服务器处理这些。)

于 2013-07-25T08:39:04.757 回答
1

尝试删除 app.yaml 中应用行前的特殊字符。它似乎不存在,只是将光标导航到该位置,然后按退格键将其删除。

于 2013-08-28T07:51:09.323 回答
0

要完成@Fernando Basso 的回答,脚本行的正确意图应该是两个空格,而不是制表符,因为它会被读取为 \t 字符,这也会产生错误。

于 2015-01-05T04:24:43.087 回答