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!
Exécuter cette commande a fonctionné pour moi - Sudo pip install --upgrade oauth2client
Vous l'avez depuis la bibliothèque oauth2client github repo
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.
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
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.