2012-04-25 81 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重疊,也會發生這種情況。