【发布时间】:2015-02-12 08:28:01
【问题描述】:
我尝试通过 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 的参数的重载。于是,我把原来的代码改成了sn-p:
def https_open(self, req):
return self.do_open(httplib.HTTPSConnection, req,
context=self._context)
到
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
【问题讨论】:
-
这也可能是GAE on 2.7.9的错误
-
您是否为此 Google 帐户启用了两步验证?
-
@whiteshooz 不,我没有
-
code.google.com/p/googleappengine/issues/detail?id=11536 的解决方法对我有用。只需要更改三行代码,瞧!我的 GAE/P 现已启动!
-
似乎已在当前的 SDK 版本 1.9.18 中得到修复——您能否检查升级 SDK 是否会解决此问题?抱歉,我们花了一段时间来解决这个问题,但我认为/希望它现在已经修复了......!感谢您的提醒顺便说一句:-)