GAE - 部署错误:“AttributeError:无法设置属性”

时间:2012-04-25 11:55:42

标签: python google-app-engine deployment

当我尝试部署我的应用时,出现以下错误:

Starting update of app: flyingbat123, version: 0-1
Getting current resource limits.
Password for avigmati: Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\appcfg.py", line 125, in 
    run_file(__file__, globals())
  File "C:\Program Files (x86)\Google\google_appengine\appcfg.py", line 121, in run_file
    execfile(script_path, globals_)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 4062, in 
    main(sys.argv)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 4053, in main
    result = AppCfgApp(argv).Run()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2543, in Run
    self.action(self)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 3810, in __call__
    return method()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 3006, in Update
    self.UpdateVersion(rpcserver, self.basepath, appyaml)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2995, in UpdateVersion
    self.options.max_size)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 2122, in DoUpload
    resource_limits = GetResourceLimits(self.rpcserver, self.config)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 355, in GetResourceLimits
    resource_limits.update(GetRemoteResourceLimits(rpcserver, config))
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py", line 326, in GetRemoteResourceLimits
    version=config.version)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc.py", line 379, in Send
    self._Authenticate()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc.py", line 437, in _Authenticate
    super(HttpRpcServer, self)._Authenticate()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc.py", line 281, in _Authenticate
    auth_token = self._GetAuthToken(credentials[0], credentials[1])
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc.py", line 233, in _GetAuthToken
    e.headers, response_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc.py", line 94, in __init__
    self.reason = args["Error"]
AttributeError: can't set attribute
2012-04-25 19:30:15 (Process exited with code 1)

以下是我的app.yaml:

application: flyingbat123
version: 0-1
runtime: python
api_version: 1
threadsafe: no

这似乎是身份验证错误,但我输入的是有效的电子邮件和密码。 我做错了什么?

6 个答案:

答案 0 :(得分:13)

我遇到了同样的问题。 我正在为我的Google帐户使用2因素身份验证,因此我之前必须输入应用程序专用密码才能将应用程序部署到GAE。如果我输入正常的谷歌密码,我收到AttributeError: can't set attribute错误。但是,当我创建application specific password并使用它时,它可以正常工作

答案 1 :(得分:7)

错误消息表明我们的SDK中存在错误。由于这个bug,你无法看到失败的原因。但是,仅当身份验证请求以403 HTTP错误结束时才会调用此代码块。

您可以按如下方式临时调整文件C:\ Program Files(x86)\ Google \ google_appengine \ google \ appengine \ tools \ appengine_rpc.py以查看实际原因(添加logger.warn(body)行)。

except urllib2.HTTPError, e:
  if e.code == 403:
    body = e.read()
    # Add a line bellow to see the actual error
    logger.warn(body)
    response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
    raise ClientLoginError(req.get_full_url(), e.code, e.msg,
                           e.headers, response_dict)
  else:
    raise

一旦找到原因,这个问题必须要容易解决。在您解决问题之后,如果您可以在our issue tracker中创建有关此神秘错误消息的问题,我将不胜感激?

答案 2 :(得分:2)

我知道这不会回答OP问题,但它可以帮助其他人在这个问题中使用其他人提到的--oauth2遇到问题。

我启用了两步验证,并且我一直在使用特定于应用程序的密码,但发现每天查找并粘贴长字符串非常繁琐。我发现使用--oauth2返回

This application does not exist (app_id=u'my-app-id')

但是添加了--no_cookies选项

appcfg.py --oauth2 --no_cookies update my-app-folder\

我现在可以通过单击打开的浏览器窗口中的[允许访问]来进行每次身份验证。

我在Windows 7上使用Python SDK 1.7.2

注意:我在其他地方找到了这个解决方案,但我不记得在哪里,所以我无法正确归因于它。遗憾。

答案 3 :(得分:1)

我有同样的问题,插入logger.warn(正文)后,我得到了这个: WARNING appengine_rpc.py:231 Error=BadAuthentication Info=InvalidSecondFactor

标准错误消息可能更有帮助,但这让我想知道我是否应该使用特定于应用程序的密码?

答案 4 :(得分:1)

将--oauth2标志添加到appcfg.py更新以获得更简单的修复

答案 5 :(得分:0)

如果您的default_error值与static_dirs中的app.yaml重叠,也会发生这种情况。