2012-04-25 64 views
11

当我尝试部署我的应用程序,我得到以下错误:GAE - 部署错误: “AttributeError错误:无法设置属性”

 
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 

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

+0

我创建新的谷歌appengine ACC和我的应用程序上传成功。 但在旧帐户下,我仍然无法部署。 – user1356067 2012-04-25 13:39:27

+0

也许您的旧帐户需要使用captcha进行解锁,请尝试在https://www.google.com/a/google.com/UnlockCaptcha – 2012-04-26 06:44:55

回答

7

错误消息表明我们的SDK中存在一个错误。由于这个错误,你看不到失败的原因。但是,仅当认证请求以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中创建有关此神秘错误消息的问题,我将不胜感激?

13

我有同样的问题。 我为我的Google帐户使用2因素身份验证,所以我以前必须输入应用程序特定的密码才能将应用程序部署到GAE。如果我输入了我的正常谷歌密码,我得到了AttributeError: can't set attribute错误。然而,当我创建了一个application specific password,并用它,它的工作

+0

上卸载它我确认这一点,我拥有2级授权并创建应用专用密码解决了这个问题。 – csadam 2012-04-27 17:37:03

+0

+1。这是两个因素认证(需要SMS代码)似乎阻止它。按照建议生成应用程序专用密码后,我的应用程序成功上传。 – goosemanjack 2012-05-12 00:06:25

+0

甚至更​​好:使用新的'--oauth2'选项。 – proppy 2012-08-16 11:16:20

1

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

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

+0

我现在生成了一个应用程序特定的密码,然后它的工作原理! – 2012-06-03 15:46:32

+0

发生两步验证时会发生这种情况。 https://accounts.google.com/b/0/SmsAuthConfig可以生成passwrod – 2012-09-04 12:09:51

1

添加--oauth2标志appcfg.py更新更容易修复

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\

我现在只需点击每一次验证[允许访问]在打开浏览器窗口。

我使用Python SDK 1.7.2在Windows 7

注:我发现这个解决方案在其他地方,但我不记得在那里,所以我不能正确地归因它。抱歉。

0

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

相关问题