[PYTHON] Que faire lorsque "Erreur de type: doit être _socket.socket, pas socket" apparaît dans GAE

Aperçu

Je voulais utiliser la fonction Twitter OAuth sur Google App Engine (GAE) et j'ai essayé de l'exécuter avec requests_oauthlib, mais cela n'a pas fonctionné, donc ce mémo

Situation / contre-mesures

ssl J'obtiens l'erreur suivante

error.log


Can't connect to HTTPS URL because the SSL module is not available

Incorporez le module ssl comme suit

app.yaml


libraries:
- name: ssl
  version: latest

socket Lorsque j'importe le module ssl, j'obtiens l'erreur suivante. Je ne l'ai pas vraiment essayé, mais cela ne semble pas se produire dans un environnement de production.

error.log


must be _socket.socket, not socket

Ajoutez _ssl & _socket à _WHITE_LIST_C_MODULES dans sandbox.py comme ci-dessous

sandbox.py.diff


$ diff /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py_orig
912,913d911
<     '_ssl',
<     '_socket',

Remplacez socket.py standard python par GAE socket.py

$ cp /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist27/socket.py /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist27/socket.py_orig

$ cp /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist27/socket.py

Réinsérez le module de requêtes

$ pip uninstall requests
$ pip install requests==2.3

Maintenant ça bouge.

référence

http://tsuboi-sj.hatenablog.com/entry/2015/05/29/164743 https://stackoverflow.com/questions/16192916/importerror-no-module-named-ssl-with-dev-appserver-py-from-google-app-engine/16937668#16937668

Recommended Posts

Que faire lorsque "Erreur de type: doit être _socket.socket, pas socket" apparaît dans GAE
Que faire si «TypeError: must be string, not int…» apparaît lors de l'utilisation de strptime
Que faire lorsque "TypeError: type de données non compris" apparaît dans numpy.zeros de python
[Python] Erreur de type: l'objet 'WebElement' n'est pas itérable Que faire lorsqu'une erreur se produit
Procédures à suivre lorsque le japonais n'est pas affiché dans matplotlib
Que faire si Python3 Venv ne fonctionne pas bien sur Raspberry Pi
[virtualbox] Que faire lorsque [Impossible de récupérer la liste des miroirs] apparaît lorsque la mise à jour yum est effectuée sur CentOS7
Que faire lorsque pyinstaller: erreur: argument --add-binary: valeur add_data_or_binary invalide: apparaît
[Docker] Que faire en cas d'erreur Impossible de trouver le git binaire apparaît
Remarques sur ce qu'il faut faire lorsque l'effacement des ombres ne fonctionne pas avec scatter () / scatter3d () de matplotlib
Que faire si vous obtenez "La session n'a pas pu être ouverte" lors de l'installation de CentOS sur VirtualBox
[Go 1.13] Que faire lorsque la disposition de répertoire inattendue: apparaît
[openpyxl] Que faire lorsque IllegalCharacterError apparaît dans pandas.DataFrame.to_excel
Que faire lorsque vous déclenchez ValueError, "type de hachage non pris en charge"
Que faire quand n'est pas dans le fichier sudoers. Cet incident sera signalé.
Que faire si vous obtenez l'erreur ʻERR_FEATURE_UNAVAILABLE_ON_PLATFORM` lors de l'utilisation de ts-node-dev sous Linux
Que faire lorsqu'une erreur de suppression se produit lors de la mise à jour de conda
Que faire lorsqu'une erreur se produit avec import _ssl
Que faire lorsque "SSL: CERTIFICATE_VERIFY_FAILED _ssl.c: 1056" apparaît en Python
OSError: [Errno 40] Que faire lorsque Message trop long apparaît
Que faire lorsque "En-tête HTTP_HOST non valide" apparaît dans Django
Que faire quand Ubuntu plante
Que faire lorsqu'une vidéo ne peut pas être lue par cv2.VideoCapture
[Beanstalk] Que faire lorsqu'une erreur se produit avec import uuid
Que faire lorsque les paramètres de l'extension jupyterlab ne sont pas reflétés
Que faire si un avertissement de plate-forme non sécurisée apparaît lors de l'exécution de Python
Que faire si vous obtenez une erreur de remplacement obligatoire `get_config` lorsque vous essayez de model.save avec Keras
Que faire si PyAudio ne peut pas être installé sur Python 3.7, 3.8, 3.9 sous Windows
[PySerial] Que penser quand une erreur "n'a pas pu ouvrir le port '/ dev / cu." Apparaît pendant la communication série avec micro: bit
Que faire lorsque le type de valeur est ambigu en Python?
Que faire si vous obtenez une erreur d'autorisation refusée (clé publique) lorsque vous essayez de tirer sur le hub Git
[Mémorandum] Que faire lorsqu'un avertissement apparaît après l'exécution de pip list
Que faire si l'installation de pyenv ne se poursuit pas avec une erreur
[Python] Que faire lorsqu'une erreur liée à l'authentification SSL est renvoyée
Que faire si une erreur se produit lors de l'importation de numpy avec VScode
Que faire si vous obtenez une erreur lors du chargement de mnist
Que faire lorsque l'avertissement "L'environnement est cohérent ..." apparaît dans l'environnement Anaconda
[OSX] [pyenv] Que faire lorsqu'une erreur SSL se produit dans pip
Que faire si psycopg2 génère une erreur lorsque pipenv se verrouille dans un environnement Pipenv
Exemple de ce qu'il faut faire lorsque l'exemple de script ne fonctionne pas (OpenCV-Python)
Que faire si CERTIFICATE_VERIFY_FAILED se produit lorsque nltk.download () est effectué sur macOS pyhon
[python] Que faire si vous obtenez une erreur avec send_keys dans le chrome sans tête
Que faire lorsqu'une erreur SSL se produit avec pip dans l'environnement Windows10, miniconda, VScode
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Que faire lorsque [Errno 2] Aucun fichier ou répertoire de ce type n'apparaît en Python
Que faire lorsque le graphique n'apparaît pas sur le notebook Jupyter (IPython)
Que faire si NotADirectoryError: [Errno 20] Pas un répertoire: 'xdg-settings' apparaît dans le notebook jupyter
[EC2] Que faire lorsque le sélénium est bloqué et que le traitement ne se poursuit pas
Que faire si le support japonais n'est pas complètement installé sur Ubuntu 16.04
Que faire si une erreur de connexion SSL (ssl.SSLError: [SSL: DH_KEY_TOO_SMALL]) se produit sur Ubuntu 20.04
Que faire si pip ne peut pas être installé
Que faire quand une PermissionError dans tempfile.mkstemp se produit
Pour écrire dans Error Repoting en Python sur GAE
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Que faire si vous ne voyez pas IntelliSense de Python dans VS Code sous Windows