2017-01-21 44 views
0

我想在Google App Engine中为Python使用boto3作为Polly API。 在我的lib子目录到目前为止,我已经安装了boto3在GAE上使用boto3 for Python

pip install -t lib boto3 

当我运行一个独立的脚本运行状况良好 但是,当我在我的应用我的开发服务器上执行boto3.client(...)我从botocore/session.py未来的错误:

from _winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE 
ImportError: No module named _winreg 

我已经看到,作为GAE是沙箱所以这是正常的_winreg模块不可

没有人有安装boto3上的经验GAE并在DE上运行V和PROD服务器?

还有另一种使用Polly API的方法吗?

import sys 
sys.plateform='linux3' 

但后来我在另一个问题

的Python NameError拼命地跑:

如下的_winreg错误回答@西蒙 - 皮埃尔·可以通过编辑config_appengine.py并加入来解决全局名称'ssl'未定义。为了解决这一个,你要编辑的app.yaml通过启用SSL:

libraries: 
- name: ssl 
    version: 2.7.11 

然后来到另一个问题,就是具体到GAE在Windows上:从_ssl进口RAND_egd使一个导入错误:无法导入名称RAND_egd。在sochet.py

下面描述socket.py的修改可以解决这个问题: https://code.google.com/p/googleappengine/issues/detail?id=12783

然后就是,我还没有找到了解决目前的问题,最终的:

在DEV服务器,当从DEV GAE调用时,AWS回答ConnectionError:('Connection aborted。',error(13,'Permission denied'))给我的调用client.describe_voices('en-US'),但是当同一个脚本被独立调用时。

我发现这样那样的问题与贝宝SDK和贝宝的解决方案的参考,但没有任何人有AWS解决boto3

https://github.com/paypal/PayPal-Python-SDK/issues/66

任何想法?

+0

你有,你可以分享一个更完整回溯? –

回答

2

解决方法:在你的appengine_config.py文件,更改sys.platform值:

import sys 
sys.platform = 'linux3' 

的问题是App Engine的开发环境是沙箱和块使用_winreg模块。 (来源:https://stackoverflow.com/a/28653565/902751

this comment从App引擎谷歌集团,

With Python version >= 2.7.4, sys.platform is not explicitly set to 'linux3' in the dev_appserver sanbox environment in Windows since App Engine SDK >= 1.9.34. [...] Unfortunately, the original sandbox.py code of sys.platform = 'linux3' was in place for compatibility with older systems.

+0

这确实解决了_winreg问题。但不幸的是,并没有解决整个boto3安装 – frank