5

Ok Ich folge dem Kurs Become A Technical Marketer und versuche, Google Spreadsheets mit GSpread zu verwalten. Ich habe die Dokumentation unter http://gspread.readthedocs.io/en/latest/oauth2.html mitverfolgt. Ich habe die Schritten in der zweiten URL gefolgt oben und lief ein Dokument mit dem folgenden Code:GSpread ImportError: Kein Modul mit dem Namen oauth2client.service_account

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!") 

Von dass ich den Fehler in meinem Terminal: Von oauth2client.service_account Import ServiceAccountCredentials Import: Kein Modul mit dem Namen oauth2client .service_account

terminal error printout

Jemand mir bitte helfen. Die Antworten mit anderen Kein Modul namens oath2client.service_account funktionieren nicht für mich. Vielen Dank!

+0

Es scheint, dass Ihr Dolmetscher nicht das oauth2client Modul finden. Welche OS/Python-Version verwendest du? Wurde 'pip install --upgrade oauth2client' ohne Fehler ausgeführt? –

+1

Ich frage mich, ob dies verwandt ist: https://github.com/burnash/gspread/issues/357Ich denke, dass "SignedJwtAssertionCredentials" in 'oauth2client' veraltet und 'gspread' auch in' ServiceAccountCredentials' verschoben wurde. Wie vorgeschlagen, könnte es zu einem Konflikt zwischen Ihrer Version von 'oauth2client' und dem unterstützten Login-Mechanismus kommen, also aktualisieren Sie sie auf die neueste Version für 'ServiceAccountCredentials' oder verwenden Sie 'SignedJwtAssertionCredentials' (alte Methode) mit Ihrer bestehenden Version. – roganjosh

+0

Dies verursacht eine Menge Verwirrung tatsächlich, die Frage [direkt vorher] (http://stackoverflow.com/questions/37710245/gspread-to-access-google-spreadsheet-httpaccesstokenrefresherror-invalid-jwt) Ihre in der gspread 'tag ist auch direkt verwandt, so dass die Betrachter dieser Frage möglicherweise auch an einer anderen Manifestation von Fehlern interessiert sind, die sich aus dieser Änderung ergeben. Ich hatte auch einen Tippfehler in meiner GitHub-Verbindung. Es ist: https://github.com/burnash/gspread/issues/357 – roganjosh

Antwort

3

Nach this discussion,

This is because OS X El Capitan ships with six 1.4.1 installed already and when it attempts to uninstall it, it doesn't have permission to do so because System Integrity Protection doesn't allow even root to modify those directories.

Unter den wenigen Abhilfen in den Antworten erwähnt, kann es sich lohnen, pip install --ignore-installed six versucht, die versucht Deinstallation des Systems six Paket zu vermeiden.

1

Ausführung dieses Befehls für mich gearbeitet - sudo pip install --upgrade oauth2client

erhielt diese von der oauth2client Bibliothek github Repo

0

So traf ich nur dieses Problem auch, und es endete für mich ist ein Weg Problem auf. Zugegeben, ich weiß, dass das ein wenig weit hergeholt ist (da die Umgebung jedes Entwicklers anders ist), aber schreibe dies hier, falls es jemand anderem hilft.

Die TLDR sicher etwas machen nicht mit Ihrem $PYTHONPATH ist Ausmisten.

Erinnern Sie sich, dass Python, wenn Sie in Python einen "Import" durchführen, Ihren sys.path auf Pakete prüft. Diese Liste hat eine Vorrangreihenfolge (d. H. Wenn ein Paket in einem früheren Pfad in der Liste gefunden wird, wird dieses Paket verwendet).

In meinem Fall sieht es so aus, als ob mein $PYTHONPATH geändert worden wäre, wenn ich vor einiger Zeit einige Appengine-Sachen gemacht hätte. Wie sich herausstellt, hatte meine Appengine eine eigene oauth2client Lib, die ziemlich alt ist.

Als Ergebnis, wenn Python from oauth2client.service_account versucht wurde, die in oauth2client appengine greifen statt den oauth2client I wurde erwartet, dass es (eine Folge der $PYTHONPATH modifiziert wurde) zu greifen.

Sie können überprüfen, ob dies auch für Sie geschieht die sys.path vor Ihrer Importaufruf durch den Druck:

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

In meinem Fall habe ich eindeutig eine Reihe von appengine Pfade sehen konnte, die Vorrang einnahmen. Dies führt mich mein ~/.bash_profile zu überprüfen, wo wala ich diese Zeile gefunden:

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

dass kommentiert heraus begann arbeitete eine neue Shell und alles Dandy.

1

Sie können den Fehler beheben, indem Sie prüfen, ob mehr als ein Ordner in Ihrer Bibliothek vorhanden ist.

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

Sie müssen nur einen der Ordner löschen oder den Bibliothekspfad im Compiler ändern. Hier

ist der Link zu einem Video, das ich zu dem Thema gemacht:

How to fix: "No module named service_account" - Python

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/17726853) – Blastfurnace

Verwandte Themen