在 GAE 上使用 boto3 Python
use boto3 on GAE for Python
我正在尝试在 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')) 我的电话 client.describe_voices('en-US') 当从DEV GAE 但当同一脚本被独立调用时则不会。
我已经找到了有关 PayPal SDK 和 PayPal 解决方案的此类问题的参考,但有没有人有 AWS boto3 的解决方案
https://github.com/paypal/PayPal-Python-SDK/issues/66
有什么想法吗?
解决方法:在您的 appengine_config.py 文件中,更改 sys.platform
值:
import sys
sys.platform = 'linux3'
问题是 App Engine 开发环境是沙盒的,阻止了 _winreg
模块的使用。 (来源:)
根据来自 App Engine Google 组的 this comment,
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.
我正在尝试在 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 并通过 :
启用 ssllibraries:
- 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')) 我的电话 client.describe_voices('en-US') 当从DEV GAE 但当同一脚本被独立调用时则不会。
我已经找到了有关 PayPal SDK 和 PayPal 解决方案的此类问题的参考,但有没有人有 AWS boto3 的解决方案
https://github.com/paypal/PayPal-Python-SDK/issues/66
有什么想法吗?
解决方法:在您的 appengine_config.py 文件中,更改 sys.platform
值:
import sys
sys.platform = 'linux3'
问题是 App Engine 开发环境是沙盒的,阻止了 _winreg
模块的使用。 (来源:
根据来自 App Engine Google 组的 this comment,
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.