web-dev-qa-db-fra.com

ImportError: Aucun module nommé apiclient.discovery

J'ai eu cette erreur dans Python de Google App Engine j'ai utilisé l'API Google Translate, mais je ne sais pas comment résoudre le problème,

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

Je vais essayer de définir l'environnement qui indique à Google App Engine SDK, et le télécharger à nouveau sur Google Apps Engine, toujours obtenir l'erreur,

Erreur: Erreur du serveur

Le serveur a rencontré une erreur et n'a pas pu terminer votre demande. Si le problème persiste, signalez-le et mentionnez ce message d'erreur et la requête qui l'a provoqué.

S'il vous plaît dites-moi comment réparer,

Merci

PDATE: Fixe Suivez l'aide de Nijjin, j'ai corrigé des problèmes en ajoutant les dossiers suivants,

apiclient, gflags, httplib2, oauth2client, uritemplate

132
Huy Tower

Vous devriez pouvoir obtenir ces dépendances avec cette installation simple:

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

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

209
Jorvis

apiclient était le nom d'origine de la bibliothèque.
À un moment donné, il a été basculé pour devenir googleapiclient.

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

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

Bien que, si nous regardons le code source du module __init__.py du paquet apiclient, le paquetage _] , nous pouvons voir que le module apiclient a été simplement conservé à l'envers. -compatibilité.

Conservez apiclient comme pseudonyme pour googleapiclient.

Donc, vous devriez vraiment utiliser googleapiclient dans votre code, car l'alias apiclient a été maintenu afin de ne pas casser le code hérité.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build
99
Jesse Webb

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 votre répertoire de projet et copier également ces uritemplate & httplib2.

Remarque: Toute bibliothèque tierce non fournie dans la liste de documentation doit être copiée dans le répertoire de votre projet Appengine.

10
Nijin Narayanan

Si aucune des solutions ci-dessus ne vous convient, demandez-vous si vous avez peut-être installé python via Anaconda. Si tel est le cas, l'installation de la bibliothèque de Google API avec conda peut résoudre le problème.

Courir:

python --version

Si vous obtenez quelque chose comme

Python 3.6.4 :: Anaconda, Inc.

Alors essaye:

conda install google-api-python-client

Comme bgoodr l’a souligné dans un commentaire, vous devrez peut-être spécifier le canal (pensez au référentiel) pour obtenir la bibliothèque Google API. Au moment de l'écriture, cela signifie exécuter la commande:

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

Voir plus sur https://anaconda.org/conda-forge/google-api-python-client

6
Jonathan Hansen

Pour un projet de moteur d'application, vous devez installer la bibliothèque localement en tapant

pip install -t lib google-api-python-client

lire plus ici

6
varun

Il existe un téléchargement pour l'API Google Python. La bibliothèque client contient la bibliothèque et toutes ses dépendances, nommée ainsi: google-api-python-client-gae- <version> .Zip dans la section des téléchargements du projet. Décompressez simplement ceci dans votre projet App Engine.

5
Joe Gregorio

Assurez-vous que vous n'avez que google-api-python-client installé. Si vous avez apiclient installé, cela provoquera une collision. Donc, lancez ce qui suit:

Sudo pip uninstall apiclient
5
Keith Holliday

J'ai résolu le problème en réinstallant le paquet avec:

pip install --force-reinstall google-api-python-client
4
mrmuggles

J'ai eu le même problème à cause d'un bogue dans l'installation du module URITemplate.

Cela a résolu le problème:

pip install --force-reinstall uritemplate.py
4
wizmer

pour python3 cela a fonctionné pour moi:

Sudo pip3 install --upgrade google-api-python-client
3
R3n4

J'ai eu la même erreur lorsque je travaillais sur un projet pour analyser les événements récents de l'agenda de Google Agenda.

L'utilisation de l'installation standard avec pip ne fonctionnait pas pour moi, voici ce que j'ai fait pour obtenir les packages dont j'avais besoin.

Allez directement à la source, voici un lien pour le google-api-python-client , mais si vous avez besoin d'une autre langue, cela ne devrait pas être trop différent.

https://github.com/google/google-api-python-client

Cliquez sur le bouton vert "Cloner ou télécharger" en haut à gauche et enregistrez-le en tant que fichier Zip. Déplacez le fichier Zip dans le dossier de votre projet et extrayez-le. Ensuite, coupez tous les fichiers du dossier créé à la racine du dossier de votre projet.

Oui, cela encombre votre espace de travail, mais de nombreux compilateurs ont des moyens de masquer des fichiers.

Après cela, le standard

from googleapiclient import discovery

fonctionne très bien.

J'espère que cela t'aides.

2
Conrad Selig

"google-api-python-client" nécessite:

pip install uritemplate.py

pour résoudre le problème sur GAE Development Server:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery
2
Dan

J'ai rencontré le même problème. Cela a fonctionné:

>>> 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
>>> 
1
Rathna

Cela ne fonctionnait que lorsque j'ai utilisé Sudo:

Sudo pip install --upgrade google-api-python-client
0
momen