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


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 .


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

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


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


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

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


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


5

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

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

5

für python3 hat das bei mir funktioniert:

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

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

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.


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

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

1

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

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


0

benutze das

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.