170 votes

Pourquoi mon application Python App Engine utilisant l'API Translate obtient-elle l'erreur ImportError : Aucun module nommé apiclient.discovery ?

J'ai obtenu cette erreur dans Python de Google App Engine ont utilisé l'API Google Translate, mais je ne sais pas comment réparer,

<module>
from apiclient.discovery import build
ImportError: No module named apiclient.discovery

Je vais essayer de environnement défini qui indique à Google App Engine SDK , Et téléchargez à nouveau sur Google Apps Engine, Je reçois toujours l'erreur ,

Erreur : Erreur de serveur

Le serveur a rencontré une erreur et n'a pas pu répondre à votre demande. Si le problème persiste, veuillez signaler votre problème en mentionnant ce message d'erreur et la requête qui l'a provoqué.

Veuillez me dire comment réparer,

Merci

UPDATE : Corrigé Suivez l'aide de Nijjin, J'ai résolu les problèmes en ajoutant les dossiers suivants,

apiclient, gflags, httplib2, oauth2client, uritemplate

Si vous avez encore des problèmes, veuillez consulter les réponses ci-dessous pour obtenir plus d'informations, par exemple : la réponse de Varum, etc...

273voto

Jorvis Points 2295

Vous devriez être en mesure d'obtenir ces dépendances avec cette simple installation :

sudo pip install --upgrade google-api-python-client

Ceci est décrit sur la page page de démarrage rapide pour python .

152voto

Jesse Webb Points 8015

apiclient était le nom original de la bibliothèque.
A un moment donné, il a été changé pour être googleapiclient .

Si votre code est exécuté sur Google App Engine, les deux devraient fonctionner.

Si vous exécutez l'application vous-même, avec l'option google-api-python-client installé, les deux devraient fonctionner aussi bien.

Bien que, si nous jetons un coup d'oeil à le code source de la apiclient du paquet __init__.py module on peut voir que le apiclient a simplement été conservé pour des raisons de rétrocompatibilité.

Conserver apiclient comme alias de googleapiclient.

Donc, vous devriez vraiment utiliser googleapiclient dans votre code, puisque le apiclient a juste été maintenu pour ne pas casser le code existant.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

10voto

Nijin Narayanan Points 1112

apiclient ne figure pas dans la liste des bibliothèques tierces fournies par le moteur d'exécution d'Appengine : http://developers.google.com/appengine/docs/python/tools/libraries27 .

Vous devez copier apiclient dans le répertoire de votre projet et vous devez copier les éléments suivants uritemplate & httplib2 aussi.

Note : Toute bibliothèque tierce qui n'est pas fournie dans la liste de documentation doit être copiée dans le répertoire de votre projet appengine.

10voto

Jonathan Hansen Points 103

Si aucune des solutions ci-dessus ne fonctionne pour vous, demandez-vous si vous n'avez pas installé python via Anaconda. Si c'est le cas, l'installation de la bibliothèque API de Google avec Conda pourrait résoudre le problème.

Cours :

python --version

Si vous obtenez quelque chose comme

Python 3.6.4 :: Anaconda, Inc.

Alors, essayez :

conda install google-api-python-client

Comme l'a souligné bgoodr dans un commentaire, vous devrez peut-être spécifier le canal (pensez au dépôt) pour obtenir la bibliothèque API de Google. Au moment où j'écris ces lignes, cela signifie qu'il faut exécuter la commande :

conda install -c conda-forge google-api-python-client

Plus d'informations sur https://anaconda.org/conda-forge/google-api-python-client

7voto

Keith Holliday Points 1494

Assurez-vous que vous avez seulement google-api-python-client installé. Si vous avez apiclient installé, il provoquera une collision. Donc, exécutez ce qui suit :

sudo pip uninstall apiclient

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X