5

Dobrze, że podążam za kursem Zostań specjalistą od marketingu technicznego i próbuję nauczyć się zarządzać Arkuszami kalkulacyjnymi Google za pomocą GSpread. Śledziłem razem z dokumentacją pod numerem http://gspread.readthedocs.io/en/latest/oauth2.html. Mam następnie kroki w drugim URL powyżej prowadził dokument z następującego kodu:GSpread ImportError: Brak modułu 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!") 

Od który pojawia się błąd w moim terminalu: od oauth2client.service_account ServiceAccountCredentials przywozowych ImportError: No module o nazwie oauth2client .service_account

terminal error printout

Ktoś proszę mi pomóc. Odpowiedzi z innymi Brak modułu oath2client.service_account nie działają dla mnie. Dzięki!

+0

Wydaje się, że tłumacz nie może znaleźć modułu oauth2client. Którą wersję OS/Python używasz? Czy 'pip install --upgrade oauth2client' działa bez błędów? –

+1

Zastanawiam się, czy jest to powiązane: https://github.com/burnash/gspread/issues/357W 'Myślę, że 'SignedJwtAssertionCredentials' był przestarzały w' oauth2client' i 'gspread' przeniesiony również do' ServiceAccountCredentials'. Zgodnie z sugestią, możesz mieć niedopasowanie między wersją 'oauth2client' i jej obsługiwanym mechanizmem logowania, więc zaktualizuj ją do najnowszej wersji' ServiceAccountCredentials' lub użyj 'SignedJwtAssertionCredentials' (starej metody) z istniejącą wersją. – roganjosh

+0

To powoduje wiele zamieszania w rzeczywistości, pytanie [bezpośrednio przed] (http://stackoverflow.com/questions/37710245/gspread-to-access-google-spreadsheet-httpaccesstokenrefresherror-invalid-jwt) twoje w 'gspread Znacznik 'jest również bezpośrednio związany, więc widzowie tego pytania mogą być również zainteresowani inną manifestacją błędów, które wynikają z tej zmiany. Miałem też literówkę w moim linku github. To jest: https://github.com/burnash/gspread/issues/357 – roganjosh

Odpowiedz

3

Według 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.

Wśród kilku obejściach mentionned w odpowiedzi, może warto próbuje pip install --ignore-installed six uniknąć próby odinstalowywania six pakietu systemu.

1

Uruchomienie tego polecenia pracował dla mnie - sudo pip install --upgrade oauth2client

Got to z biblioteki oauth2client github repo

0

Więc po prostu napotkał ten problem jak dobrze i skończyło się to kwestią droga dla mnie. To prawda, wiem, że jest to trochę naciągane (skoro każde środowisko programistów jest inne), ale piszę to tutaj, na wypadek gdyby pomógł komuś innemu.

TLDR upewnić coś nie mucking z $PYTHONPATH.

Przypomnij sobie, że kiedy robisz "import" w python, python sprawdza twój sys.path dla pakietów. Ta lista ma kolejność pierwszeństwa (tj. Jeśli pakiet znajduje się we wcześniejszej ścieżce na liście, wówczas ten pakiet zostanie użyty).

W moim przypadku wygląda na to, że moja wersja $PYTHONPATH została zmodyfikowana, gdy robiłam coś z Appengine jakiś czas temu. Jak się okazało, mój appengine miał własną bibliotekę oauth2client, która jest dość stara.

W rezultacie, kiedy pyton próby from oauth2client.service_account został chwytając oauth2client w silniku aplikacji, a nie oauth2client Spodziewałem do przechwycenia (wynikiem $PYTHONPATH które zostały zmodyfikowane).

Można sprawdzić, czy to dzieje się z wami, a także drukując sys.path przed rozmowy importu:

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

W moim przypadku było wyraźnie zobaczyć kilka ścieżek AppEngine które miały pierwszeństwo. To prowadzi mnie do sprawdzenia mojej ~/.bash_profile gdzie wala znalazłem ten wiersz:

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

skomentowane, że obecnie, rozpoczął nową skorupę i wszystko działało dandys.

1

Możesz naprawić błąd, sprawdzając, czy w bibliotece jest więcej niż jeden folder.

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

wystarczy usunąć jeden z folderów lub zmienić ścieżkę biblioteki w kompilatorze.

Oto link do filmu, który zrobiłem na temat:

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

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/17726853) – Blastfurnace

Powiązane problemy