ImportError: Kein Modul mit dem Namen apiclient.discovery

153

Ich habe diesen Fehler in Python von Google App Engine erhalten. Ich habe die Google Übersetzer-API verwendet. Ich weiß jedoch nicht, wie ich das beheben soll.

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

Ich werde versuchen , Set - Umgebung , die auf Google App Engine SDK gibt an , Und wieder auf Google Apps Engine hochladen, immer den Fehler ,

Fehler: Serverfehler

Der Server hat einen Fehler festgestellt und konnte Ihre Anfrage nicht abschließen. Wenn das Problem weiterhin besteht, melden Sie Ihr Problem und erwähnen Sie diese Fehlermeldung und die Abfrage, die es verursacht hat.

Bitte sagen Sie mir, wie zu beheben,

Vielen Dank

UPDATE: Behoben Befolgen Sie die Hilfe von Nijjin. Ich habe Probleme behoben, indem ich die folgenden Ordner hinzugefügt habe:

apiclient, gflags, httplib2, oauth2client, uritemplate

Wenn Sie immer noch ein Problem haben, lesen Sie bitte die Antwort auf dieser Seite, um weitere Informationen zu erhalten. Ex. : Varum Antwort, etc ...

Huy Tower
quelle
Haben Sie apiclientdas Codeverzeichnis in Ihr Appengine-Projekt aufgenommen?
Nijin Narayanan
meinst du die externen Bibliotheken? (Es ist das / Google App Engine SDK / google-api-python-client / apiclient / recovery.py)? Ich benutze IDEA IntelliJ. Vielen Dank für die Bereitstellung weiterer Informationen
Huy Tower
Stellen Sie sicher, dass Sie Ihr Programm nicht als sudo ausführen, da pip libs bei Ihrem Benutzer zu Hause installiert und der Root-Benutzer diese Bibliotheken dann nicht hatpip show PyDrive
deFreitas
cloud.google.com/sdk/docs kann bei dem Prozess helfen
Xiao
Dies war die erste Seite, die ich aufgerufen habe, aber ich habe die folgenden Antworten von Nijin und Varun zunächst verpasst. Sie müssen das Modul als 'Drittanbieterpaket' in das App-Arbeitsverzeichnis aufnehmen, indem Sie den Anweisungen über den Link folgen. Unter Linux Ubuntu musste ich auch sudo verwenden, wenn ich den Schalter -t für die Installation in lib / verwendete.
Alchemie

Antworten:

240

Sie sollten in der Lage sein, diese Abhängigkeiten mit dieser einfachen Installation zu erhalten:

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

Dies wird auf der Schnellstartseite für Python beschrieben .

Jorvis
quelle
7
Ich stoße auf den gleichen Fehler, nachdem ich genau das getan habe. Nun, ich habe es mit installiert C:\>C:\Python27\Scripts\easy_install-script.py --upgrade google-api-python-clientund es steht Installed c:\python27\lib\site-packages\google_api_python_client-1.3.1-py2.7.eggund versucht erneut zu installierengoogle-api-python-client 1.3.1 is already the active version in easy-install.pth
Edmund Sulzanok
5
Der in der Antwort angegebene Link wurde zu Googles Erste Schritte mit Python
Nathan
4
Ich habe keine Ahnung, warum der obige Befehl ohne sudobei mir funktioniert hat.
MTK
5
Für Python 3 muss pip im obigen Befehl durch pip3 ersetzt werden. Für manche mag es nicht offensichtlich sein, glaube ich.
Emmet B
1
Mit Debian 9 Stretch habe ich den Befehl sudo apt-get install python-googleapi python-oauth2clientund den Befehl verwendet sudo apt-get install python3-googleapi python3-oauth2client. Es hat perfekt funktioniert und ich bevorzuge diesen Weg, weil ich genug mit einem Paketmanager habe.
Gerard
120

apiclientwar der ursprüngliche Name der Bibliothek.
Irgendwann wurde es umgestellt googleapiclient.

Wenn Ihr Code in Google App Engine ausgeführt wird, sollten beide funktionieren.

Wenn Sie die Anwendung selbst ausführen und der google-api-python-client installiert ist, sollten beide ebenfalls funktionieren.

Wenn wir uns jedoch den Quellcode des Moduls des apiclientPakets__init__.py ansehen , können wir sehen, dass das apiclientModul aus Gründen der Abwärtskompatibilität einfach herumgehalten wurde.

Behalten Sie apiclient als Alias ​​für googleapiclient bei.

Sie sollten also wirklich googleapiclientin Ihrem Code verwenden, da der apiclientAlias ​​nur beibehalten wurde, um Legacy-Code nicht zu beschädigen.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build
Jesse Webb
quelle
Weitere Informationen: Ich hatte gerade dieses Problem (Python 3.5.2) und wurde durch Ändern des Namens in der importAnweisung behoben. Ich hatte den Beispielcode von Google in eine Datei in PyCharm verschoben, und als PyCharm mich aufforderte, ein Paket mit dem Namen " apiclientIch" zu installieren, tat ich dies. Als ich mir das Modul ansah, das es installiert hatte, war es winzig und schien nicht mit Google verwandt zu sein.
Nathan Wailes
10

apiclientist nicht in der Liste der Drittanbieter-Bibliotheken enthalten, die von der Appengine-Laufzeit bereitgestellt werden: http://developers.google.com/appengine/docs/python/tools/libraries27 .

Sie müssen apiclientin Ihr Projektverzeichnis kopieren und Sie müssen diese uritemplate& httplib2auch kopieren .

Hinweis: Alle Bibliotheken von Drittanbietern, die nicht in der Dokumentationsliste enthalten sind, müssen in Ihr Appengine-Projektverzeichnis kopiert werden

Nijin Narayanan
quelle
1
Ich habe Python von Google Translate API verwendet, daher benötige ich: apiclient, gflags, httplib2, oauth2client, uritemplate. Danke: D
Huy Tower
Die Antwort von Jorvis ist relevanter für diejenigen, die keine Anwendung ausführen. korrigiere mich, wenn ich falsch liege.
Ausreißer
Stimmt das wirklich, dass apiclient nicht in den Standardbibliotheken enthalten ist? Wir können apiclient als ein Verzeichnis sehen, das direkt im Google App Engine SDK-Verzeichnis in PyCharm aufgeführt ist. Das heißt, obwohl wir es dort sehen, bekommen wir immer noch den Fehler in seiner Frage.
Praxiteles
8

Wenn keine der oben genannten Lösungen für Sie funktioniert, prüfen Sie, ob Sie Python möglicherweise über Anaconda installiert haben. Wenn dies der Fall ist, kann die Installation der Google API-Bibliothek mit conda das Problem beheben.

Lauf:

python --version

Wenn Sie so etwas bekommen

Python 3.6.4 :: Anaconda, Inc.

Dann versuche es:

conda install google-api-python-client

Wie bgoodr in einem Kommentar ausgeführt hat, müssen Sie möglicherweise den Kanal (Think Repository) angeben, um die Google API-Bibliothek abzurufen. Zum Zeitpunkt des Schreibens bedeutet dies, dass der Befehl ausgeführt wird:

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

Weitere Informationen finden Sie unter https://anaconda.org/conda-forge/google-api-python-client

Jonathan Hansen
quelle
2
Eigentlich wird anscheinend ein Kanal benötigt. Siehe anaconda.org/conda-forge/google-api-python-client (siehe die Option -c).
Bgoodr
2
Vielen Dank, dass Sie @bgoodr. Ich habe Ihren Kommentar in die Antwort aufgenommen.
Jonathan Hansen
7

Stellen Sie sicher, dass Sie nur google-api-python-clientinstalliert haben. Wenn Sie apiclientinstalliert haben, führt dies zu einer Kollision. Führen Sie also Folgendes aus:

sudo pip uninstall apiclient
Keith Holliday
quelle
6

Für App Engine-Projekte müssen Sie die Bibliothek lokal durch Eingabe installieren

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

Lesen Sie hier mehr

varun
quelle
Dies brachte mich zum Arbeiten, obwohl ich auch hier der Antwort folgen musste, um das lib-Verzeichnis als Anbieter hinzuzufügen
kevinmicke
5

Für die Google API Python Client-Bibliothek gibt es einen Download, der die Bibliothek und alle ihre Abhängigkeiten enthält und im Download-Bereich des Projekts den Namen google-api-python-client-gae- <Version> .zip trägt . Entpacken Sie dies einfach in Ihr App Engine-Projekt.

Joe Gregorio
quelle
5

Ich habe das Problem behoben, indem ich das Paket neu installiert habe mit:

pip install --force-reinstall google-api-python-client
mrmuggles
quelle
5

für python3 hat das bei mir funktioniert:

sudo pip3 install --upgrade google-api-python-client
R3n4
quelle
4

Ich hatte das gleiche Problem aufgrund eines Fehlers bei der Installation des URITemplate-Moduls.

Dies löste das Problem:

pip install --force-reinstall uritemplate.py
Wizmer
quelle
3

Ich habe den gleichen Fehler erhalten, als ich an einem Projekt gearbeitet habe, um aktuelle Kalenderereignisse aus Google Kalender zu analysieren.

Die Verwendung der Standardinstallation mit pip hat bei mir nicht funktioniert. Hier ist, was ich getan habe, um die Pakete zu erhalten, die ich brauchte.

Gehen Sie direkt zur Quelle. Hier ist ein Link für den Google-API-Python-Client . Wenn Sie jedoch eine andere Sprache benötigen, sollte diese nicht zu unterschiedlich sein.

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

Klicken Sie oben links auf die grüne Schaltfläche "Klonen oder Herunterladen" und speichern Sie sie als Zip-Datei. Verschieben Sie die Zip-Datei in Ihren Projektordner und extrahieren Sie sie dort. Schneiden Sie dann alle Dateien aus dem erstellten Ordner zurück in das Stammverzeichnis Ihres Projektordners.

Ja, dies überfüllt Ihren Arbeitsbereich, aber viele Compiler haben Möglichkeiten, Dateien auszublenden.

Danach der Standard

from googleapiclient import discovery

funktioniert super.

Hoffe das hilft.

Conrad Selig
quelle
2

"google-api-python-client" erfordert:

pip install uritemplate.py

So beheben Sie das Problem auf dem GAE Development Server:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery
Dan
quelle
1

Ich bin auf das gleiche Problem gestoßen. Das hat funktioniert:

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

Es hat nur bei mir funktioniert, als ich sudo verwendet habe:

sudo pip install --upgrade google-api-python-client
Momen
quelle
1

Ich habe den gleichen Fehler erhalten, obwohl ich dem Google-Handbuch unter https://developers.google.com/drive/api/v3/quickstart/python gefolgt bin. Dann wurde mir klar, dass ich Folgendes aufrufen musste:

python3 quickstart.py

Anstatt:

python quickstart.py <-- WRONG

(Beachten Sie das " 3")

Hat einwandfrei funktioniert.

Ich benutze Ubuntu 18.04.4 LTS.

Alexandre Schmidt
quelle
0

benutze das

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
a zEnItH
quelle