web-dev-qa-db-fra.com

ImportError: Aucun module nommé google.oauth2

Je voulais ajouter une dépendance google.cloud.storage à mon projet et j'ai donc essayé d'installer cette dépendance avec

pip install --upgrade google-cloud-storage

En relançant mon application avec dev_appserver, cela me montre que mes composants gcloud devaient être mis à jour. Ok alors, gcloud components update

Et dans mon fichier src/__init__.py, j'ai eu le code qui indique à gcloud dans quel dossier chercher des dépendances comme celle-ci:

from google.appengine.ext import vendor

vendor.add('src/libs')

Toutes les dépendances sont installées correctement, sauf que je reçois l'erreur ImportError: No module named google.oauth2

PS: Mon application utilise OAuth2 pour sécuriser l’accès à l’API. Et cela fonctionnait correctement avant de faire une mise à jour des composants, maintenant même si je restaure le code, supprime le dossier libs et installe à nouveau les dépendances, j'ai toujours l'erreur No module, et il semble que dev_appserver ne cherche pas cette dépendance dans la bibliothèque dossier!

Voici le résultat de gcloud --version:

Google Cloud SDK 188.0.1
app-engine-python 1.9.66
app-engine-python-extras 1.9.63
bq 2.0.28
core 2018.02.08
gsutil 4.28

Et voici le Traceback:

Traceback (most recent call last):
  File "/home/login/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/home/login/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/home/login/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 96, in LoadObject
    __import__(cumulative_path)
  File "/home/headless/Documents/Projects/meterFleet/app-backend/src/main.py", line 5, in <module>
    from src.app.user.api import UserApi
  File "/home/headless/Documents/Projects/meterFleet/app-backend/src/app/user/api.py", line 7, in <module>
    from src.googleapis.iam import getIamPolicy, addIapUser, deleteIapUser
  File "/home/headless/Documents/Projects/meterFleet/app-backend/src/googleapis/iam.py", line 5, in <module>
    from src.common.authentication import OAuth
  File "/home/headless/Documents/Projects/meterFleet/app-backend/src/common/authentication.py", line 3, in <module>
    from google.oauth2 import service_account
  File "/home/login/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 1147, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named google.oauth2
4
Mehdi Benmoha

Le problème provenait des dépendances installées à la fois dans le dossier du projet (dans le dossier src/libs) et dans le dossier des bibliothèques locales python (/usr/local/python2.7/dist-packages). J'ai enlevé les bibliothèques google du dossier python libs et ça marche à nouveau! 

4
Mehdi Benmoha

J'ai eu ce problème un peu. J'ai désinstallé tous les packages Google de mon ordinateur local, supprimé le dossier lib de mon dossier d'application GAE, créé à nouveau puis exécuté 

pip install -t lib google-auth google-auth-httplib2 google-api-python-client --upgrade

Cela devrait résoudre votre problème.

3
ethanenglish

J'ai décidé d'utiliser pipenv pour résoudre ce problème . pip3 install pipenv pipenv install pipenv Shell Installez ensuite les bibliothèques dont vous avez besoin.

0
Adam Mendoza