我正在尝试在 Google App Engine for Python 中将 boto3 用于 Polly API。到目前为止,我已经在我的 lib 子目录中安装了 boto3
pip install -t lib boto3
当我运行独立脚本时,它运行良好但是当我在我的 DEV 服务器上的应用程序中执行 boto3.client(...) 时,我收到来自 botocore/session.py 的错误:
from _winreg import OpenKeyEx, QueryValueEx, CloseKey, HKEY_LOCAL_MACHINE
ImportError: No module named _winreg
我已经看到,因为 GAE 是沙盒的,所以 _winreg 模块不可用是正常的
有没有人有在 GAE 上安装 boto3 并在 DEV 和 PROD 服务器上运行的经验?
或者还有其他使用 Polly API 的方法吗?
正如@simon-pierre 回答的那样,可以通过编辑 config_appengine.py 并添加以下内容来解决 _winreg 错误:
import sys
sys.plateform='linux3'
但后来我遇到了另一个问题
Python NameError:未定义全局名称“ssl”。要解决这个问题,您必须编辑 app.yaml 并通过以下方式启用 ssl:
libraries:
- name: ssl
version: 2.7.11
然后出现另一个特定于 Windows 上的 GAE 的问题:from _ssl import RAND_egd 产生 ImportError: cannot import name RAND_egd。在 sochet.py 中
下面描述的socket.py的修改可以解决它: https ://code.google.com/p/googleappengine/issues/detail?id=12783
然后是一个我现在还没有找到解决办法的终极问题:
在 DEV 服务器上,AWS 回答: ConnectionError: ('Connection aborted.', error(13, 'Permission denied')) 从 DEV GAE 调用时我的呼叫 client.describe_voices('en-US') 但不是在同一脚本时称为独立。
我找到了对 PayPal SDK 和 PayPal 解决方案的此类问题的参考,但有没有人有 AWS boto3 的解决方案
https://github.com/paypal/PayPal-Python-SDK/issues/66
任何想法?