2017-01-21 32 views
0

Я пытаюсь использовать boto3 для API Polly в Google App Engine для Python. До сих пор я установил boto3 в моем Lib подкаталогеuse boto3 on GAE for Python

pip install -t lib boto3 

При запуске автономный скрипт он работает хорошо Но когда я исполню boto3.client (...) в мое приложение на моем DEV сервере, Я получаю сообщение об ошибке приходит из botocore/session.py:

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

Я видел, что, как песочницу GAE так что это нормально, что модуль _winreg недоступен

ли кто-нибудь имеет опыт установки boto3 на GAE и запустить его на DE V и PROD-сервер?

Или существует другой способ использования API Polly?

Как ответил @ Симон-Пьер ниже ошибок _winreg может быть решен путем редактирования config_appengine.py и добавления:

import sys 
sys.plateform='linux3' 

Но тогда я запускался в том другой проблеме

Python NameError: глобальное имя 'ssl' не определен. Для того, чтобы решить эту, вы должны app.yaml редактировать и включить SSL через:

libraries: 
- name: ssl 
    version: 2.7.11 

А потом еще одна проблема, которая является специфичным для GAE на Windows: от _ssl импорта RAND_egd делает ImportError: не может импортировать имя RAND_egd. В sochet.py

Модификация socket.py, описанной ниже, может решить: https://code.google.com/p/googleappengine/issues/detail?id=12783

А потом приходит окончательный проблема, которую я не нашел затруднительное сейчас:

На сервере DEV Ответ AWS: ConnectionError: («Соединение отменено.», Ошибка (13, «Разрешено отклонение»)) для моего вызова client.describe_voices («en-US») при вызове из DEV GAE, но не тогда, когда один и тот же сценарий называется автономным ,

Я нашел ссылку на такого рода проблемы с PayPal SDK и решения для PayPal, но кто-нибудь имеет решение для 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 из группы Google App Engine,

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 install – frank