python - example - google calendar api javascript
“ImportError: file_cache no está disponible” cuando se usa el cliente Python para la cuenta de servicio de Google file_cache (4)
El jefe del código del módulo "google-api-python-client" dijo ...
install_requires = [
''httplib2>=0.9.2,<1dev'',
''oauth2client>=1.5.0,<5.0.0dev'', <<=============
''six>=1.6.1,<2dev'',
''uritemplate>=3.0.0,<4dev'',
]
Por lo tanto, he desinstalado oauth2client versión 4.0.0
Luego, descargué auth2client 1.5.2 en un archivo tar.gz del sitio oficial de python https://pypi.python.org/pypi/oauth2client/1.5.2
He instalado este archivo descargado, así que tengo la versión 1.5.2 de oauth2client
Package Version
------------------------ ---------
certifi 2016.9.26
discovery 0.0.4
distribute 0.7.3
future 0.16.0
google-api-python-client 1.5.5
httplib2 0.9.2
oauth2client 1.5.2
pefile 2016.3.28
pip 9.0.1
pyasn1 0.1.9
pyasn1-modules 0.0.8
PyInstaller 3.2
pypiwin32 219
requests 2.11.1
rsa 3.4.2
setuptools 28.8.0
six 1.10.0
uritemplate 3.0.0
Después de eso, ALL vuelve a funcionar bien y no hay ningún mensaje de advertencia.
Estoy usando una cuenta de servicio para G Suite con delegación de dominio completa. Tengo un script con acceso de solo lectura al calendario de Google. La secuencia de comandos funciona bien, pero genera un error (¿en un subproceso en segundo plano?) Cuando "compilo" el servicio. Aquí está el código:
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
import urllib
import requests
from apiclient.discovery import build
cal_id = "[email protected]"
scopes = [''https://www.googleapis.com/auth/calendar.readonly'']
credentials = ServiceAccountCredentials.from_json_keyfile_name(''my_cal_key.json'', scopes=scopes)
delegated_credentials = credentials.create_delegated(''[email protected]'')
http_auth = delegated_credentials.authorize(Http())
# This is the line that throws the error
cal_service = build(''calendar'',''v3'',http=http_auth)
#Then everything continues to work normally
request = cal_service.events().list(calendarId=cal_id)
response = request.execute()
# etc...
El error que se produce es:
WARNING:googleapiclient.discovery_cache:file_cache is unavailable when using oauth2client >= 4.0.0
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/__init__.py", line 36, in autodetect
from google.appengine.api import memcache
ImportError: No module named ''google''
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/file_cache.py", line 33, in <module>
from oauth2client.contrib.locked_file import LockedFile
ImportError: No module named ''oauth2client.contrib.locked_file''
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/file_cache.py", line 37, in <module>
from oauth2client.locked_file import LockedFile
ImportError: No module named ''oauth2client.locked_file''
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/__init__.py", line 41, in autodetect
from . import file_cache
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/file_cache.py", line 41, in <module>
''file_cache is unavailable when using oauth2client >= 4.0.0'')
ImportError: file_cache is unavailable when using oauth2client >= 4.0.0
¿Qué está pasando aquí y esto es algo que puedo arreglar? He intentado reinstalar y / o actualizar el paquete de google
.
Este error se muestra debido a un conjunto de permisos insuficiente para el archivo credentials.json.
credentials.json no es más que un archivo de credenciales de google. Nombre puede diferir en su sistema.
Simplemente haz chmod 777 ~ / credentials.json
Feliz codificacion !!
Llegué tarde a la fiesta, pero tuve un problema similar hoy y encontré la respuesta here
Solución solo para el error: file_cache is unavailable when using oauth2client >= 4.0.0
Solución:
cambie su discovery.build()
para tener el campo cache_discovery=False
ie
discover.build(api, version, http=http, cache_discovery=False)
EDITAR :
Como dice @Chronial, esto deshabilitará el caché.
Una solución que no deshabilita el caché se puede encontrar here
Para utilizar la API de Google para el cliente de Python, primero debe instalarla, ya que la API de Google no está integrada en los módulos de Python. La instrucción se encuentra en Instalar la biblioteca .
Instalación
Puede usar un administrador de paquetes o descargar e instalar la biblioteca del cliente de Python manualmente:
Instalación gestionada
Use pip o setuptools para administrar su instalación (es posible que primero deba ejecutar sudo):
pip (preferido):
$ pip install --upgrade google-api-python-client
Setuptools: use la herramienta easy_install incluida en el paquete setuptools:
$ easy_install --upgrade google-api-python-client