web-dev-qa-db-fra.com

GSpread ImportError: Aucun module nommé oauth2client.service_account

Ok, je suis le cours Devenir un spécialiste du marketing technique et j'essaie d'apprendre à gérer Google Spreadsheets avec GSpread. J'ai suivi la documentation sur http://gspread.readthedocs.io/en/latest/oauth2.html . J'ai suivi les étapes de la deuxième URL ci-dessus et ai exécuté un document avec le code suivant:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

scope = ['https://spreadsheets.google.com/feeds']

credentials = ServiceAccountCredentials.from_json_keyfile_name('DFS Google Sheets Data Imports-7205de852ff7.json', scope)

gc = gspread.authorize(credentials)

wks = gc.open("Authority Scraper").sheet1
wks.update_cell(1,2,"Hello World!")

À partir de là, je reçois l’erreur sur mon terminal: à partir de oauth2client.service_account, importation ServiceAccountCredentials ImportError: aucun module nommé oauth2client.service_account

erreur d'impression du terminal

Quelqu'un s'il vous plaît aidez-moi. Les réponses avec les autres modules No nommés oath2client.service_account ne fonctionnent pas pour moi. Merci!

8
Ryan Bonhardt

Exécuter cette commande a fonctionné pour moi - Sudo pip install --upgrade oauth2client

Vous l'avez depuis la bibliothèque oauth2client github repo

12
kevthanewversi

Selon cette discussion ,

En effet, OS X El Capitan est déjà livré avec six versions 1.4.1 et lorsqu'il tente de les désinstaller, il n'est pas autorisé à le faire, car System Integrity Protection n'autorise pas même la racine à modifier ces répertoires.

Parmi les quelques solutions de contournement mentionnées dans les réponses, il vaut peut-être la peine d'essayer pip install --ignore-installed six pour éviter la tentative de désinstallation du paquetage six du système.

3
Jacques Gaudin

Vous pouvez corriger l'erreur en vérifiant s'il y a plus d'un dossier dans votre bibliothèque.

C:\Python27\Lib\site-packages\oauth2client
C:\Program Files (x86)\Google\Google_Appengine\lib\google-api-python-client\oauth2client

il vous suffit de supprimer l'un des dossiers ou de modifier le chemin d'accès à la bibliothèque dans le compilateur.

Voici le lien vers une vidéo que j'ai faite sur le sujet:

Comment résoudre ce problème: "Aucun module nommé service_account" - Python

1
virtualdvid

Donc, je viens juste de rencontrer ce problème aussi et ça a fini par être un problème de chemin pour moi. Certes, je sais que c'est un peu tiré par les cheveux (puisque l'environnement de développement de chacun est différent), mais écrire ceci ici au cas où cela aiderait quelqu'un d'autre.

Le TLDR veille à ce que quelque chose ne se gâche pas avec votre $PYTHONPATH.

Rappelez-vous que lorsque vous effectuez une "importation" en python, python vérifie votre paquet sys.path. Cette liste a un ordre de priorité (c’est-à-dire si un package est trouvé dans un chemin antérieur de la liste, ce package sera utilisé).

Dans mon cas, il semblerait que mon $PYTHONPATH ait été modifié lorsqu’il ya quelques temps, j’ai fait des choses d’appengine. Il se trouve que mon appengine avait son propre oauth2client lib qui est assez vieux.

En conséquence, lorsque Python a tenté from oauth2client.service_account, il a saisi le oauth2client dans appengine plutôt que le oauth2client que je m'attendais à saisir (le résultat du $PYTHONPATH ayant été modifié).

Vous pouvez également vérifier si cela vous arrive en imprimant le fichier sys.path avant votre appel d'importation:

import sys
print sys.path
from oauth2client.service_account import ServiceAccountCredentials

Dans mon cas, je pouvais clairement voir un tas de chemins d’appengin qui priment. Ceci m’a amené à vérifier mon ~/.bash_profile où wala j’ai trouvé cette ligne:

export PYTHONPATH=$PYTHONPATH::$LOCAL_APPENGINE_HOME/lib/:$LOCAL_APPENGINE_HOME/lib/yaml/:$LOCAL_APPENGINE_HOME:$LOCAL_APPENGINE_HOME/lib/webapp2-2.5.2/`

Commenté cela, commencé une nouvelle Shell et tout a fonctionné dandy.

0
Billy