ImportError: apiclient.discovery adlı modül yok


153

Google App Engine'in Python'unda Google Translate API'sini kullandığımda bu hatayı aldım , ancak nasıl düzeltileceğini bilmiyorum,

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

Google App Engine SDK'sına işaret eden ortamı ayarlamaya çalışacağım ve Google Apps Engine'e tekrar yükleyin, her zaman hatayı alın ,

Hata: Sunucu Hatası

Sunucu bir hatayla karşılaştı ve isteğinizi tamamlayamadı. Sorun devam ederse, lütfen sorununuzu bildirin ve bu hata mesajını ve soruna neden olan sorguyu belirtin.

Lütfen bana nasıl düzeltileceğini söyle,

Teşekkürler

GÜNCELLEME: Düzelt Nijjin'in yardımını takip et, aşağıdaki klasörleri ekleyerek sorunları çözdüm,

apiclient, gflags, httplib2, oauth2client, uritemplate

Hâlâ sorun yaşıyorsanız, lütfen daha fazla bilgi almak için bu sayfanın cevabını aşağıda düşünün. ex. : Varum cevabı vb.


apiclientAppengine projenize kod dizini eklediniz mi ?
Nijin Narayanan

Dış Kütüphaneleri mi kastediyorsunuz? (Bu / Google App Engine SDK / google-api-python-client / apiclient / discovery.py)? IDEA IntelliJ kullanıyorum. Daha fazla bilgi verdiğiniz için teşekkürler
Huy Tower

Programınızı sudo olarak çalıştırmadığınızdan emin olun çünkü pip install libs kullanıcı evinizde, o zaman root kullanıcısı şu kütüphanelere sahip değildirpip show PyDrive
deFreitas

cloud.google.com/sdk/docs bu sürece yardımcı olabilir
Xiao

Bu ilk vurduğum sayfaydı, ancak başlangıçta Nijin ve Varun'dan gelen cevapları kaçırdım. Bağlantıdan gelen talimatları izleyerek modülü uygulama çalışma dizinine 'üçüncü taraf paketi' olarak eklemeniz gerekir. Linux Ubuntu'da, lib / 'e kurmak için -t anahtarını kullanırken sudo kullanmak zorunda kaldım.
simya

Yanıtlar:


240

Bu bağımlılıkları bu basit yükleme ile elde edebilmelisiniz:

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

Bu, python'un hızlı başlangıç ​​sayfasında açıklanmaktadır .


7
Bunu yaptıktan sonra aynı hatayla karşılaşıyorum. Peki ben kurdum C:\>C:\Python27\Scripts\easy_install-script.py --upgrade google-api-python-clientve diyor Installed c:\python27\lib\site-packages\google_api_python_client-1.3.1-py2.7.eggve tekrar yüklemeye çalışıyorgoogle-api-python-client 1.3.1 is already the active version in easy-install.pth
Edmund Sulzanok


4
Hiçbir fikrim yok, yukarıdaki komut neden olmadan sudobenim için çalıştı.
mtk

5
Python 3 için, pip'in yukarıdaki komutta pip3 ile değiştirilmesi gerekir. İnandığım bazı kişiler için açık olmayabilir.
Emmet B

1
Debian 9 Stretch'i kullanma Komutu sudo apt-get install python-googleapi python-oauth2clientve komutu kullandım sudo apt-get install python3-googleapi python3-oauth2client. Mükemmel çalıştı ve bu şekilde tercih ediyorum çünkü bir paket yöneticisine yeteri kadar sahibim.
Gerard

120

apiclientkütüphanenin orijinal adıdır.
Bir noktada, olduğu gibi değiştirildi googleapiclient.

Kodunuz Google App Engine'de çalışıyorsa, her ikisinin de çalışması gerekir.

Uygulamayı kendiniz çalıştırıyorsanız, google-api-python-client yüklüyse, her ikisinin de çalışması gerekir.

Bununla birlikte, paketin modülünün kaynak kodunaapiclient__init__.py bakarsak, apiclientmodülün geriye doğru uyumluluk için basitçe tutulduğunu görebiliriz .

Apiclient'i googleapiclient için bir takma ad olarak saklayın.

Bu yüzden, googleapiclientkodunuzda gerçekten kullanmalısınız , çünkü apiclienttakma ad eski kodu kırmamak için korunmuştur.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

Daha fazla bilgi: Ben sadece bu sorun (Python 3.5.2) vardı ve deyimdeki adı değiştirmek importdüzeltildi. Google'ın örnek kodunu PyCharm'daki bir dosyaya taşıdım ve PyCharm benden apiclientböyle bir paket yüklememi istediğinde . Aslında kurmuş olduğu modüle baktığımda, küçüktü ve Google ile ilişkili görünmüyordu.
Nathan Wailes

10

apiclientappengine çalışma zamanı tarafından sağlanan üçüncü taraf kütüphanesi listesinde değil: http://developers.google.com/appengine/docs/python/tools/libraries27 .

Kopyalayabilir gerek apiclientproje dizine & bu kopyalamak gerekmez uritemplate& httplib2de.

Not: Doküman listesinde bulunmayan herhangi bir üçüncü taraf kütüphanesi, proje proje dizininize kopyalanmalıdır.


1
Google Çeviri API'sının Python'unu kullandım, bu yüzden ihtiyacım var: apiclient, gflags, httplib2, oauth2client, uritemplate. Teşekkürler: D
Huy Kulesi

Jorvis'in yanıtı, başvuru yapmayanlar için daha alakalı. Eğer Yanlışsam beni düzelt.
Outlier

Apiclient'in varsayılan kütüphanelere dahil edilmediği gerçekten doğru mu? Apiclient'i doğrudan PyCharm'daki Google App Engine SDK dizininde listelenen bir dizin olarak görebiliriz. Bununla birlikte, orada görseler de, sorusunda hala hatayı alıyoruz.
Praxiteles

8

Yukarıdaki çözümlerin hiçbiri sizin için işe yaramazsa, Anaconda üzerinden python yükleyip yüklemediğinizi düşünün. Bu durumda, google API kitaplığının conda ile yüklenmesi sorunu çözebilir.

Çalıştırmak:

python --version

Eğer böyle bir şey alırsan

Python 3.6.4 :: Anaconda, Inc.

O zaman dene:

conda install google-api-python-client

Bgoodr'ın bir yorumda belirttiği gibi, google API kitaplığını almak için kanalı belirtmeniz gerekebilir (havuzu düşünün). Yazarken bu komutun çalıştırılması anlamına gelir:

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

Https://anaconda.org/conda-forge/google-api-python-client adresinde daha fazla bilgi bulabilirsiniz.


2
Aslında görünüşe göre bir kanala ihtiyaç var. Anaconda.org/conda-forge/google-api-python-client adresine bakın (-c seçeneğine bakın).
bgoodr

2
Teşekkürler @bgoodr. Yorumunuzu cevaba ekledim.
Jonathan Hansen

7

Yalnızca google-api-python-clientyüklediğinizden emin olun . Eğer varsa apiclientkurulu, bir çarpışma neden olacaktır. Yani, aşağıdakileri çalıştırın:

sudo pip uninstall apiclient



5

Paketi yeniden yükleyerek sorunu düzelttim:

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

5

python3 için bu benim için çalıştı:

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

4

URITemplate modülünün kurulumunda bir hata nedeniyle aynı sorunu yaşadım.

Bu sorunu çözdü:

pip install --force-reinstall uritemplate.py

3

Google Takvim'deki son takvim etkinliklerini ayrıştırmak için bir proje üzerinde çalışırken de aynı hatayı aldım.

Pip ile standart kurulumu kullanmak benim için işe yaramadı, işte ihtiyacım olan paketleri almak için yaptım.

Doğrudan kaynağa gidin, burada google-api-python-client için bir bağlantı var , ancak farklı bir dile ihtiyacınız varsa çok farklı olmamalıdır.

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

Sol üst taraftaki yeşil "Klonla veya İndir" düğmesini tıklayın ve bir zip dosyası olarak kaydedin. Zip dosyasını proje klasörünüze taşıyın ve oradan çıkarın. Ardından, oluşturduğu klasördeki tüm dosyaları proje klasörünüzün kök dizinine kesin.

Evet, bu çalışma alanınızı karmaşıklaştırır, ancak birçok derleyicinin dosyaları gizleme yolları vardır.

Bunu yaptıktan sonra standart

from googleapiclient import discovery

harika çalışıyor.

Bu yardımcı olur umarım.


2

"google-api-python-client" şunları gerektirir:

pip install uritemplate.py

Development Server'daki sorunu düzeltmek için:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery

1

Aynı sorunla karşılaştım. Bu işe yaradı:

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

Sadece sudo kullandığımda benimle çalıştı:

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


0

bunu kullan

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.