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...

1voto

Alexandre Schmidt Points 373

J'ai obtenu la même erreur, même après avoir suivi le guide de Google à l'adresse suivante https://developers.google.com/drive/api/v3/quickstart/python puis j'ai réalisé que je devais invoquer comme ça :

python3 quickstart.py

Au lieu de :

python quickstart.py <-- WRONG

(Notez le " 3 ")

Il a fonctionné sans problème.

J'utilise Ubuntu 18.04.4 LTS .

0voto

a zEnItH Points 97

Utiliser ce

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

0voto

Francesco Vadicamo Points 2867

La même erreur peut être constatée si vous créez un module Python et que vous exécutez le script après l'avoir installé via pip o pipx commande. Dans ce cas, assurez-vous que vous avez déclaré ce que le projet au minimum doit s'exécuter correctement dans install_requires de votre setup.py donc dans ce cas :

install_requires=[
    "google-api-python-client>=1.12.3",
    "google-auth-httplib2>=0.0.4",
    "google-auth-oauthlib>=0.4.1"
]

0voto

Martin Cronje Points 108

Cela peut également se produire si l'interpréteur de votre IDE pointe vers le mauvais environnement virtuel. Dans VSCODE, je l'ai réglé manuellement sur le bon interpréteur et mon problème a été résolu.

0voto

wescpy Points 2127

(mai 2021) Cela fait environ 8 ans que la question initiale a été posée et, depuis, plusieurs modifications ont été apportées au produit. Les nouveaux développeurs qui arrivent ici et qui cherchent à utiliser l'API Google Translate sur Python App Engine ont donc quelques changements à faire :

  1. Informations sur les produits/coûts : L'API de Google Translate est maintenant disponible en tant que API de traduction Google Cloud . Il n'est pas gratuit (ce qui signifie que vous devez créer un compte de facturation adossé à un instrument financier comme une carte de crédit), mais vous disposez d'un quota de caractères traduits par mois. Voir sa page de prix pour plus d'informations. De même, alors que vous pouviez auparavant créer une application App Engine sans d'une carte de crédit, vous ne pouvez plus le faire via l'application nouvelle politique à partir de novembre 2019 . Il a toujours un généreux Quota du niveau "Toujours gratuit". que vous devez dépasser pour encourir des frais. Consultez également le Page de prix d'App Engine pour plus d'informations.

  2. Bibliothèques clientes : Plutôt que d'utiliser apiclient o googleapiclient qui font partie de la Bibliothèque client des API de Google qui est un multi-produit de bas niveau, plateforme -nous recommandons la bibliothèque client de niveau Bibliothèques client Google Cloud qui sont de niveau supérieur et produit -ciblée. Cela signifie qu'il existe une bibliothèque client spécifique à Cloud Translation (en fait deux : basic/v2/Python 2 o avancé/v3/Python 3 ) - ceux-ci sont de plus haut niveau et beaucoup plus faciles à utiliser :

  • Ajouter la librairie du client : pip install -U pip google-cloud-translate (ou pip3 )
  • Avec lui, votre échantillon de code peut être aussi simple que :

    'translate_demo.py - demo the Cloud Translation API' from future import print_function import google.auth from google.cloud import translate

    TRANSLATE = translate.TranslationServiceClient() _, PROJECT_ID = google.auth.default() PARENT = 'projects/{}'.format(PROJECT_ID) TARGET_LANG = 'es' TEXT = 'Hello world' DATA = { 'parent': PARENT, 'contents': [TEXT], 'target_language_code': TARGET_LANG, } try: # Python 3/advanced/v3 rsp = TRANSLATE.translate_text(request=DATA) except TypeError: # Python 2/basic/v2 rsp = TRANSLATE.translate_text(**DATA) print(TEXT, '=', rsp.translations[0].translated_text)

Il fonctionne également sur Python 2 et 3 sans aucune modification :

$ python2 translate_demo.py
Hello world = Hola Mundo
$ python3 translate_demo.py
Hello world = Hola Mundo

Cet extrait de code peut être adapté à App Engine assez facilement (voir ci-dessous), surtout si vous faites du prototypage, car vous pouvez tirer parti de l'option compte de service par défaut afin de ne pas avoir à s'embrouiller avec des comptes de service, comme en créer un nouveau, créer une paire de clés publique/privée, et devoir télécharger le fichier d'informations d'identification JSON et faire pointer l'adresse de l'utilisateur. GOOGLE_APPLICATION_CREDENTIALS la variable d'environnement, etc. Lorsque vous êtes prêt à passer en production et que vous avez besoin de créer votre propre compte de service, consultez le site suivant cette page dans les docs .

En outre, des changements importants ont été apportés à App Engine lui-même : le service App Engine Python 2 original comportait un grand nombre d'API propriétaires intégrées (Datastore, Memcache, Task Queues, etc.). En raison des réactions des utilisateurs concernant le "verrouillage des fournisseurs", la prochaine génération de service Python 3 App Engine a été conçue pour libérer les développeurs de ces services. Au lieu de cela, vous utiliserez les services productifs équivalents, c'est-à-dire.., Datastore en nuage , Cloud Memorystore y Tâches dans le nuage à la place. L'équipe de Google Cloud a créé un guide de migration et j'ai complété ce guide avec des didacticiels pratiques, des échantillons de code et des vidéos pour aider les gens à migrer vers ces services dégroupés lorsque vous portez votre application vers Python 3.

Si vous envisagez Plateformes de calcul sans serveur Google Cloud au-delà de App Engine, tels que Fonctions du nuage (FaaS) ou Course aux nuages (CaaS conteneurisé/géré), puis jetez un œil à Cet exemple d'application Translation API que j'ai créé (d'où j'ai essentiellement volé l'extrait de code ci-dessus) qui peut être déployé de 8 façons différentes, Python 2 et 3, localement avec le serveur de développement de Flask, vers App Engine, Cloud Functions, ou Cloud Run, le tout avec des changements de configuration mineurs. L'objectif est de montrer la flexibilité de nos plateformes et d'aider les utilisateurs à mieux comprendre les différences entre elles.

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