[英]use boto3 on GAE for Python
我正在尝试将boto3用于Google App Engine for Python中的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的问题:从_ssl导入RAND_egd导致ImportError:无法导入名称RAND_egd。 在sochet.py中
如下所述修改socket.py即可解决此问题: https : //code.google.com/p/googleappengine/issues/detail? id=12783
然后是一个最终的问题,我目前还没有找到解决方法:
在DEV服务器上,AWS回答:从DEV GAE调用时,我的呼叫client.describe_voices('en-US')出现ConnectionError:('Connection aborted。',error(13,'权限被拒绝'))到我,但在同一脚本中却没有称为独立。
我已经找到了与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
模块的使用。 (来源: https : //stackoverflow.com/a/28653565/902751 )
根据App Engine Google小组的这一评论 ,
使用Python版本> = 2.7.4时,由于App Engine SDK> = 1.9.34,因此在Windows的dev_appserver sanbox环境中未将sys.platform显式设置为'linux3'。 [...]不幸的是,原先的sys.platform ='linux3'的sandbox.py代码已与旧系统兼容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.