【问题标题】:Cannot run Hello World on Google App Engine Windows无法在 Google App Engine Windows 上运行 Hello World
【发布时间】:2013-12-04 14:58:19
【问题描述】:

我的 Windows 中有downaloded and installed Python 2.7.6,我还安装了最新版本的 Windows 版GAE SDK

我的 GAE 上有以下配置:

我正在运行一个带有以下文件的 Hello World 项目:

main.py

import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('Hello world!')

app = webapp2.WSGIApplication([('/', MainHandler)], debug=True)

app.yaml

application: HelloWorld
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"

但是,当我单击 运行 按钮时,为了运行他的项目,我在 LOG 输出中收到以下错误:

2013-12-04 14:51:49 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program Files (x86)\\Google\\google_appengine\\dev_appserver.py', '--skip_sdk_update_check=yes', '--port=8080', '--admin_port=8000', 'D:\\Users\\pedro\\Desktop\\HelloWorld']"
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py", line 197, in <module>
    _run_file(__file__, globals())
  File "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py", line 193, in _run_file
    execfile(script_path, globals_)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 872, in <module>
    main()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 865, in main
    dev_server.start(options)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 657, in start
    options.yaml_files)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\application_configuration.py", line 549, in __init__
    module_configuration = ModuleConfiguration(yaml_path)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\application_configuration.py", line 82, in __init__
    self._yaml_path)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\application_configuration.py", line 266, in _parse_configuration
    return appinfo_includes.ParseAndReturnIncludePaths(f)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\appinfo_includes.py", line 63, in ParseAndReturnIncludePaths
    appyaml = appinfo.LoadSingleAppInfo(appinfo_file)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\appinfo.py", line 1756, in LoadSingleAppInfo
    listener.Parse(app_info)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\yaml_listener.py", line 226, in Parse
    self._HandleEvents(self._GenerateEventParameters(stream, loader_class))
  File "C:\Program Files (x86)\Google\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: Unable to assign value 'HelloWorld' to attribute 'application':
Value 'HelloWorld' for application does not match expression '^(?:(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{0,99}[a-z\d])$'
  in "D:\Users\pedro\Desktop\HelloWorld\app.yaml", line 1, column 14
2013-12-04 14:51:50 (Process exited with code 1)

因此我有以下问题:

  1. 我已通过转到文件 -> 新应用程序创建了此项目,但显然我的自动生成的 app.yaml 文件不正确。我究竟做错了什么?
  2. 我曾尝试先使用 Python 3.3,但它不起作用。 GAE 仅适用于 Python 2.7 对吗?我做的一切都正确吗?
  3. 当我单击“浏览”按钮时,我收到错误消息,指出未指定浏览器。我该如何解决?

如果可能的话,感谢您的帮助:S

【问题讨论】:

  • 您的应用程序 ID(HelloWorld) 无效

标签: python google-app-engine python-2.7


【解决方案1】:

根据不匹配的正则表达式,应用名称需要小写:

>>> regex = r'^(?:(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{0,99}[a-z\d])$'
>>> print(re.match(regex, 'HelloWorld'))
None
>>> print(re.match(regex, 'helloworld'))
<_sre.SRE_Match object at 0x13ac308>

【讨论】:

  • 什么!?我对此一无所知!谢谢!
  • 我有完全相同的问题和相同的错误。奇怪的是,我的应用 ID 是“behnam-features-testing”,当我将其更改为“behnam-feature-testing”(从功能中删除 s)时,它就可以工作了。我不能使用“behnam-features-testing”,因为我在 Google Developers Console 中的应用 ID 是“behnam-features-testing”。任何想法?启动器也没有部署应用程序,它说它可以,但是当我转到 my-app-id.appspot.com/filename.php 时,它说“错误:NOT_FOUND”。我还应该提到它曾经可以工作,但现在不行了。
  • @aquavitae 谢谢伙计,这行得通!谁能解释为什么 Google App Engine 不允许使用大写的应用名称?...
  • 谢谢,我遇到了同样的问题。将应用程序名称全部更改为小写,现在它工作正常:)
【解决方案2】:

您的应用程序标识符('HelloWorld')无效。您应该根据GAE doc 使用您在管理控制台中创建的那个。

当您的 GAE 应用程序部署在 appspot.com 中时,该 ID 将是该应用程序的子域。这就是为什么应用 id 应该匹配正则表达式 r'^(?:(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{0,99}[a-z\d])$'

【讨论】:

  • 我有完全相同的问题和相同的错误。奇怪的是,我的应用 ID 是“behnam-features-testing”,当我将其更改为“behnam-feature-testing”(从功能中删除 s)时,它就可以工作了。我不能使用“behnam-features-testing”,因为我在 Google Developers Console 中的应用 ID 是“behnam-features-testing”。任何想法?启动器也没有部署应用程序,它说它可以,但是当我转到 my-app-id.appspot.com/filename.php 时,它说“错误:NOT_FOUND”。我还应该提到它曾经可以工作,但现在不行了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 2015-11-27
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2020-01-07
相关资源
最近更新 更多