2016-02-18 16 views
5

Sto cercando di imparare le API di google e la mia esperienza è con Python, quindi sto cercando di usare il client python di api per accedere ad alcuni dei servizi di google, ma sto riscontrando un errore nella creazione dell'oggetto servizio.Python google api

Non c'è nessun problema importando il modulo di compilazione da apiclient.discovery:

>>> from apiclient.discovery import build 
>>> 

Ma quando arriva il momento di costruire l'oggetto servizio (come fatto nel file tutorial che ho scaricato), qualcosa si blocca e posso capisco cosa sta andando storto!

>>> service = build('books','v1',developerKey=api_key) 
WARNING:root:No module named locked_file 
Traceback (most recent call last): 
    File "build/bdist.macosx-10.10-intel/egg/googleapiclient/discovery_cache/__init__.py", line 38, in autodetect 
    from . import file_cache 
    File "build/bdist.macosx-10.10-intel/egg/googleapiclient/discovery_cache/file_cache.py", line 32, in <module> 
ImportError: No module named locked_file 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "build/bdist.macosx-10.10-intel/egg/oauth2client/util.py", line 140, in positional_wrapper 
    File "build/bdist.macosx-10.10-intel/egg/googleapiclient/discovery.py", line 196, in build 
    File "build/bdist.macosx-10.10-intel/egg/googleapiclient/discovery.py", line 242, in _retrieve_discovery_doc 
    File "/Library/Python/2.7/site-packages/httplib2-0.9.2-py2.7.egg/httplib2/__init__.py", line 1609, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "/Library/Python/2.7/site-packages/httplib2-0.9.2-py2.7.egg/httplib2/__init__.py", line 1351, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "/Library/Python/2.7/site-packages/httplib2-0.9.2-py2.7.egg/httplib2/__init__.py", line 1272, in _conn_request 
    conn.connect() 
    File "/Library/Python/2.7/site-packages/httplib2-0.9.2-py2.7.egg/httplib2/__init__.py", line 1036, in connect 
    self.disable_ssl_certificate_validation, self.ca_certs) 
    File "/Library/Python/2.7/site-packages/httplib2-0.9.2-py2.7.egg/httplib2/__init__.py", line 80, in _ssl_wrap_socket 
    cert_reqs=cert_reqs, ca_certs=ca_certs) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 911, in wrap_socket 
    ciphers=ciphers) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 520, in __init__ 
    self._context.load_verify_locations(ca_certs) 
IOError: [Errno 13] Permission denied 
>>> 

Ecco come sono arrivato a questo punto nel caso in cui è utile: ho cominciato con l'installazione della libreria client e tutti gli altri moduli che dipendeva da come descritto qui: Google API Python Installation. Ho usato pip (e il necessario sudo) e tutto è andato bene. Ho provato a correggere il mio errore aggiornando i moduli con l'argomento --update di pip ma questo non sembra essere il problema dato che tutti dicono "Requisito già aggiornato: {Nome del documento modulo qui}" quindi non credo che sia questo il problema

Successivamente ho iniziato a seguire il tutorial. Nel tutorial, fornisce l'API di esempio (che mi dà problemi) per interfacciare con Google Books: Google Books Example. Ho ricevuto una chiave sviluppatore API da google come delineato all'inizio del tutorial e non credo che questo sia il problema perché non eseguo nemmeno l'oggetto servizio.

Ho cercato l'errore ma non ho visto nessuno con problemi simili, quindi spero che le persone qui possano aiutarti!

Grazie,

MLP

risposta

0
IOError: [Errno 13] Permission denied 

Sembra che tu abbia problemi con i permessi. Fare chown 'username' 'python file'

O chown -R 'username' 'directory name'

+0

Ho appena provato chown (sul file/dir con l'api giusto? Non sui moduli o altro?) Ma ho ottenuto lo stesso errore :(ecco i permessi per il file python è in esecuzione da: "-rw-r - r-- 1 mlp staff 2271 Feb 18 00:54 GoogleBooksExample.py", e qui ci sono i permessi per il modulo menzionato immediatamente prima nel traceback "-rw- r - r-- 1 root wheel 36583 lug 14 2015 ssl.py " – MLP

+1

@ MLP e cosa succede se esegui lo script con privilegi di amministratore? Funzionerebbe? – noise

5

stesso qui, sembra che non ci sia un LOCKEDFILE nel oauth2client 2,0

>>> from oauth2client.locked_file import LockedFile  
    Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    ImportError: No module named locked_file 

Inoltre ho trovato un problema aperto a github. Si tratta di un errore di google-api-python-client: https://github.com/google/google-api-python-client/issues/179

+1

è stato appena risolto nel ramo principale – patroqueeet