python - library - ImportError: Ningún módulo llamado apiclient.discovery
library api (13)
Recibí este error en Google App Engine. Python usó Google Translate API, pero no sé cómo solucionarlo,
<module>
from apiclient.discovery import build
ImportError: No module named apiclient.discovery
Intentaré establecer un entorno que indique a Google App Engine SDK , y subir de nuevo a Google Apps Engine, siempre obtengo el error ,
Error: error del servidor
El servidor encontró un error y no pudo completar su solicitud. Si el problema persiste, informe su problema y mencione este mensaje de error y la consulta que lo causó.
Por favor dime como arreglarlo,
Gracias
ACTUALIZACIÓN: solucionado. Siga la ayuda de Nijjin. Repare los problemas agregando las siguientes carpetas.
apiclient, gflags, httplib2, oauth2client, uritemplate
"google-api-python-client" requiere:
pip install uritemplate.py
para solucionar el problema en GAE Development Server:
from googleapiclient.discovery import build
ImportError: No module named googleapiclient.discovery
Asegúrese de que solo tiene google-api-python-client
instalado. Si tiene un apiclient
instalado, causará una colisión. Por lo tanto, ejecute lo siguiente:
sudo pip uninstall apiclient
Debería poder obtener estas dependencias con esta simple instalación:
sudo pip install --upgrade google-api-python-client
Esto se describe en la página de inicio rápido para python .
Existe una descarga para la biblioteca de Google API Python Client que contiene la biblioteca y todas sus dependencias, llamada algo así como google-api-python-client-gae-<version>.zip en la sección de descargas del proyecto. Simplemente descomprime esto en tu proyecto de App Engine.
Me encontré con el mismo problema. Esto funcionó:
>>> import pkg_resources
>>> pkg_resources.require("google-api-python-client")
[google-api-python-client 1.5.3 (c:/python27), uritemplate 0.6 (c:/python27/lib/site-packages/uritemplate-0.6-py2.7.egg), six 1.10.0 (c:/python27/lib/site-packages/six-1.10.0-py2.7.egg), oauth2client 3.0.0 (c:/python27/lib/site-packages/oauth2client-3.0.0-py2.7.egg), httplib2 0.9.2 (c:/python27/lib/site-packages/httplib2-0.9.2-py2.7.egg), simplejson 3.8.2 (c:/python27/lib/site-packages/simplejson-3.8.2-py2.7-win32.egg), six 1.10.0 (c:/python27/lib/site-packages/six-1.10.0-py2.7.egg), rsa 3.4.2 (c:/python27/lib/site-packages/rsa-3.4.2-py2.7.egg), pyasn1-modules 0.0.8 (c:/python27/lib/site-packages/pyasn1_modules-0.0.8-py2.7.egg), pyasn1 0.1.9 (c:/python27/lib/site-packages/pyasn1-0.1.9-py2.7.egg)]
>>> from apiclient.discovery import build
>>>
Obtuve el mismo error al trabajar en un proyecto para analizar eventos de calendario recientes de Google Calendar.
Usar la instalación estándar con pip no funcionó para mí, esto es lo que hice para obtener los paquetes que necesitaba.
Vaya directamente a la fuente, aquí hay un enlace para google-api-python-client , pero si necesita un idioma diferente, no debería ser demasiado diferente.
Haga clic en el botón verde "Clonar o Descargar" cerca de la esquina superior izquierda y guárdelo como un archivo comprimido. Mueva el zip a su carpeta de proyecto y extráigalo allí. A continuación, corte todos los archivos de la carpeta que crea nuevamente en la raíz de la carpeta del proyecto.
Sí, esto abarrota su espacio de trabajo, pero muchos compiladores tienen formas de ocultar archivos.
Después de hacer esto, el estándar
from googleapiclient import discovery
Funciona genial.
Espero que esto ayude.
Para el proyecto del motor de la aplicación, debes instalar la lib localmente tecleando
pip install -t lib google-api-python-client
leer más here
Si ninguna de las soluciones anteriores funciona para usted, considere si es posible que haya instalado Python a través de Anaconda. Si este es el caso, la instalación de la biblioteca API de google con conda podría solucionarlo.
Correr:
python --version
Si obtienes algo como
Python 3.6.4 :: Anaconda, Inc.
Entonces intenta:
conda install google-api-python-client
Como bgoodr ha señalado en un comentario, es posible que deba especificar el canal (repositorio de ideas) para obtener la biblioteca API de Google. En el momento de escribir esto, esto significa ejecutar el comando:
conda install -c conda-forge google-api-python-client
Vea más en https://anaconda.org/conda-forge/google-api-python-client
Solo funcionó conmigo cuando usé sudo:
sudo pip install --upgrade google-api-python-client
Solucioné el problema reinstalando el paquete con:
pip install --force-reinstall google-api-python-client
Tuve el mismo problema debido a un error en la instalación del módulo URITemplate.
Esto resolvió el problema:
pip install --force-reinstall uritemplate.py
apiclient
era el nombre original de la biblioteca.
En algún momento, se cambió a googleapiclient
.
Si su código se está ejecutando en Google App Engine, ambos deberían funcionar.
Si está ejecutando la aplicación usted mismo, con google-api-python-client instalado, ambos deberían funcionar también.
Aunque, si echamos un vistazo al código fuente del módulo __init__.py
del paquete __init__.py
, podemos ver que el módulo apiclient
simplemente se mantuvo por compatibilidad con versiones anteriores.
Conservar apiclient como un alias para googleapiclient.
Entonces, realmente debería usar googleapiclient
en su código, ya que el alias apiclient
solo se mantuvo para no romper el código heredado.
# bad
from apiclient.discovery import build
# good
from googleapiclient.discovery import build
apiclient
no está en la lista de biblioteca de terceros proporcionada por el tiempo de ejecución de appengine: http://developers.google.com/appengine/docs/python/tools/libraries27 .
apiclient
copiar apiclient
en el directorio de su proyecto y también debe copiar estos uritemplate
y httplib2
.
Nota: Cualquier biblioteca de terceros que no esté incluida en la lista de documentación debe copiarla en su directorio de proyectos appengine.