«ImportError: нет модуля с именем _ssl» с помощью dev_appserver.py из Google App Engine
у использоватьrequests
модуль в стандартной среде выполнения Python для Google App Engine.
Цитата изофициальные документы Google Cloud:
Вы можете использовать сторонние библиотеки, которые являются чистым кодом Python без расширений C,скопировав библиотеку в каталог вашего приложения. Если сторонняя библиотека уже встроена и поставляется вместе со средой выполнения, вы можете использовать библиотеку, не копируя ее в свое приложение.
Сторонние библиотеки должны быть реализованы в виде чистого кода Python без расширений Си. При копировании в каталог приложения они учитываются в квотах файлов, поскольку библиотека загружается в App Engine вместе с кодом вашего приложения.
requests
не входит в комплект GAE, поэтому я добавил его в папку приложения в соответствии с инструкциями.
requests
потребовалось несколько других модулей, которые не поставляются с GAE, поэтому я добавил все из них в папку своего приложения:
certifi
chardet
idna
urllib3
Еще одна проблема возникла. Моя просьба отправляется вAPI стека Exchange, который имеетhttps://
протокол. Вот ошибка:
SSLError: HTTPSConnectionPool(host='api.stackexchange.com', port=443): Max retries exceeded with url: /2.2/1?site=stackoverflow (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",))
ssl
Модуль встроен в среду исполнения GAE Python, поэтому я поместил следующее вapp.yaml
:
libraries:
- name: webapp2
version: latest
- name: ssl
version: latest
Это не сработало. Я получил ту же ошибку, что и раньше. Я скопировал папку модуля SSL в каталог своего приложения и сделалimport ssl
вmain.py
, но теперь он выдает исключение, требующее установки еще одного модуля:
File "/Users/williamqin/Projects/stackpromo/ssl/__init__.py", line 61, in <module>
import _ssl2 # if we can't import it, let the error propagate
ImportError: No module named _ssl2
Я искал по всей сети для_ssl2
Модуль Python, но я нигде не смог его найти!
Как правильно использоватьrequests
модуль в Google App Engine?