2
votes

Gspread - question d'erreur d'authentification - pas de dossier AppData

J'ai en fait trouvé un moyen de contourner ce problème, mais je ne comprends toujours pas pourquoi cela se produit. Je viens de commencer à utiliser gspread donc je suis assez nouveau.

Après avoir installé via pip et téléchargé les informations d'identification pour Google Sheets et l'API Drive, lorsque j'exécute ce code (à partir du gspread github), j'obtiens une erreur

gc = gspread.service_account(filename='filePath')

L'erreur:

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Tyler\\AppData\\Roaming\\gspread\\credentials.json'

Donc, évidemment, le fichier ne se trouve pas dans le bon dossier AppData. J'ai regardé et il n'y a pas de dossier \ gspread dans AppData. J'ai même essayé d'en créer un pour rendre le chemin correct, mais cela ne fonctionnait toujours pas. J'ai finalement réussi à le faire fonctionner en utilisant une commande différente et en spécifiant le chemin exact où je place le fichier d'informations d'identification.

import gspread

gc = gspread.oauth()

sh = gc.open("Example spreadsheet")

print(sh.sheet1.get('A1'))

Mais je suis toujours perplexe quant à la raison pour laquelle la méthode originale n'a pas fonctionné. Je suis sûr qu'il me manque quelque chose d'incroyablement simple, et toute aide sera grandement appréciée!


2 commentaires

gspread auteur ici. Où avez-vous mis le fichier des informations d'identification au départ? Pourriez-vous s'il vous plaît exécuter cette commande dans votre invite de commande: echo %APPDATA% ?


Salut @Burnash! Merci pour la réponse. J'ai d'abord mis le fichier dans un dossier de téléchargement général car je n'ai pas trouvé le chemin spécifié dans les instructions sur le gspread github. J'ai fait écho% PATH% et il montre toutes mes variables d'environnement, mais le dossier de données de l'application n'y est pas inclus. Dois-je ajouter le dossier de données d'application en tant que variable d'environnement? Je suis assez nouveau dans la programmation, donc je suis toujours en train de comprendre les bases ici, désolé!


3 Réponses :


0
votes

J'ai eu le même problème ... J'ai également ajouté un dossier gspread sous mon foler AppData, qui ne fonctionnait pas.

Ensuite, j'ai regardé d'un peu plus près le chemin du message d'erreur renvoyé ... et gspread essayé de mettre un dossier gspread sous AppData \ Roaming, ce qui semble avoir fait l'affaire.


1 commentaires

Merci pour ça! J'ai juste essayé et cela ne semble toujours pas fonctionner pour une raison quelconque. Eh bien, je suppose que je vais continuer à utiliser mon travail pour le moment.



1
votes

J'ai eu le même problème aujourd'hui. Impossible de trouver le chemin "% APPDATA% \ gspread \ credentials.json".

Donc, comme le gars ci-dessus a répondu, j'ai créé le chemin et je viens de copier mon fichier d'informations d'identification. Essayez d'abord cela n'a pas fonctionné, mais j'ai renommé le fichier comme dans les instructions, "credentials.json" (avant qu'il ne soit nommé "client_secret.json"). Voici le lien: https://gspread.readthedocs.io/en/latest/oauth2.html

Donc, après cela, cela a très bien fonctionné.

Le seul problème est que lorsque vous entrez dans votre compte Google et que vous en supprimez l'accès à l'application, le code ne refera pas l'authentification. Il affichera simplement l'erreur suivante:

google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.', '{\n  "error": "invalid_grant",\n  "error_description": "Token has been expired or revoked."\n}')

Donc, pour refaire l'authentification, je suis allé dans le même dossier que j'ai créé et j'ai effacé le fichier "allowed_user.json". Après l'avoir fait, le programme refait simplement l'authentification et crée un nouveau "allowed_user.json".

Eh bien, je pense que cela devrait être un moyen de refaire l'authentification sans avoir besoin de supprimer le fichier "allowed_user.json".

Quoi qu'il en soit, j'espère que cela vous aidera. La deuxième partie est juste au cas où vous vous êtes cassé par curiosité comme je l'ai fait.

Bonne journée.


0 commentaires

0
votes

Lorsque j'ai recherché Ce PC pour le dossier gspread, le nom du dossier avait en fait d'autres informations, y compris la version gspread. J'ai déplacé le fichier d'informations d'identification des téléchargements vers là-bas et cela a fonctionné (j'ai nommé mon fichier client_secret.json et cela fonctionnait toujours).


0 commentaires