我尝试通过 appcfg.py 更新 Google App Engine 上的项目:
C:\> "C:\Program Files (x86)\Google\google_appengine\appcfg.py" update c:\secondApp
但我立即收到以下错误(忽略顶行):
File "C:\Python27\lib\urllib2.py", line 1240, in https_open
context=self._context)
TypeError: do_open() got an unexpected keyword argument 'context'
我决定深入研究该文件urllib2.py
并找出问题所在。经过几分钟的代码审查后,我得出这样的结论:接受名为的参数的重载context
不存在。于是,我修改了原来的代码片段:
def https_open(self, req):
return self.do_open(httplib.HTTPSConnection, req,
context=self._context)
to
def https_open(self, req):
return self.do_open(httplib.HTTPSConnection, req)
瞧!它有效(虽然出现了另一个有关身份验证的问题,但第一个问题得到了解决)。但很奇怪的是,在正式版本中存在这样的错误,而其他人很可能也遇到过同样的问题。令人惊讶的是,我找不到其他人报告的这个问题!
模块有什么问题吗?我是否混合了错误版本的已安装软件包?有什么帮助吗?
我的 Google App Engine SDK 版本:1.9.17 x64
我安装的Python版本:2.7.9 x64
我的平台:Windows 8.1 x64
而且我对 Python 不熟悉:D
解决方案:
正如 Migel Tissera 提到的,问题在于身份验证。但我尝试了他提出的命令并得到了同样的错误。幸运的是,我执行了以下命令并成功! (我也添加了 --noauth_local_webserver 和 --no_cookies 开关):
appcfg.py --noauth_local_webserver --oauth2 --skip_sdk_update_check --no_cookies update c:\secondApp