ImportError: Tidak ada modul bernama apiclient.discovery


153

Saya mendapat kesalahan ini di Python Google App Engine telah menggunakan Google Translate API, Tapi saya tidak tahu bagaimana cara memperbaikinya,

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

Saya akan mencoba mengatur lingkungan yang menunjukkan SDK Google App Engine , dan mengunggah ke Google Apps Engine lagi, selalu mendapatkan kesalahan ,

Kesalahan: Kesalahan Server

Server mengalami kesalahan dan tidak dapat menyelesaikan permintaan Anda. Jika masalah tetap ada, tolong laporkan masalah Anda dan sebutkan pesan kesalahan ini dan pertanyaan yang menyebabkannya.

Tolong beritahu saya cara memperbaikinya,

Terima kasih

UPDATE: Tetap Ikuti bantuan Nijjin, saya memperbaiki masalah dengan menambahkan folder berikut,

apiclient, gflags, httplib2, oauth2client, uritemplate

Jika Anda masih memiliki masalah, silakan pertimbangkan di bawah. Jawab halaman ini untuk mendapatkan info lebih lanjut. ex. : Jawaban Varum, dll ...


Apakah Anda memasukkan apiclientdirektori kode dalam proyek appengine Anda?
Nijin Narayanan

maksud Anda perpustakaan eksternal? (Ini adalah / Google App Engine SDK / google-api-python-client / apiclient / discovery.py)? Saya menggunakan IDEA IntelliJ. Terima kasih telah memberikan informasi lebih lanjut
Menara Huy

Pastikan Anda tidak menjalankan program Anda sebagai sudo karena pip menginstal libs di rumah pengguna Anda, maka pengguna root tidak memiliki perpustakaan inipip show PyDrive
deFreitas

cloud.google.com/sdk/docs dapat membantu proses
Xiao

Ini adalah halaman pertama yang saya tekan, tetapi saya melewatkan jawaban di bawah ini awalnya dari Nijin dan Varun. Anda perlu memasukkan modul dalam direktori kerja aplikasi sebagai 'paket pihak ketiga' mengikuti instruksi dari tautan. Di Linux Ubuntu, saya juga harus menggunakan sudo ketika menggunakan -t switch untuk menginstal ke lib /.
alkimia

Jawaban:


240

Anda harus bisa mendapatkan dependensi ini dengan instalasi sederhana ini:

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

Ini dijelaskan pada halaman mulai cepat untuk python .


7
Saya menemukan kesalahan yang sama setelah melakukan hal itu. Yah saya menginstalnya dengan C:\>C:\Python27\Scripts\easy_install-script.py --upgrade google-api-python-clientdan mengatakan Installed c:\python27\lib\site-packages\google_api_python_client-1.3.1-py2.7.eggdan mencoba untuk menginstal lagigoogle-api-python-client 1.3.1 is already the active version in easy-install.pth
Edmund Sulzanok

5
Tautan yang disediakan dalam jawaban dipindahkan ke Google Memulai dengan Python
Nathan

4
Saya tidak tahu, mengapa perintah di atas tanpa sudobekerja untuk saya.
mtk

5
Untuk Python 3, pip perlu diganti dengan pip3 pada perintah di atas. Mungkin tidak jelas bagi sebagian orang yang saya percaya.
Emmet B

1
Menggunakan Debian 9 Stretch saya menggunakan perintah sudo apt-get install python-googleapi python-oauth2clientdan perintah sudo apt-get install python3-googleapi python3-oauth2client. Ini bekerja dengan sempurna dan saya lebih suka cara ini karena saya punya cukup dengan satu manajer paket.
Gerard

120

apiclientadalah nama asli perpustakaan.
Pada titik tertentu, itu diubah menjadi googleapiclient.

Jika kode Anda berjalan di Google App Engine, keduanya harus berfungsi.

Jika Anda menjalankan aplikasi sendiri, dengan google-api-python-client diinstal, keduanya harus bekerja juga.

Meskipun, jika kita melihat kode sumber dari modul apiclientpaket__init__.py , kita dapat melihat bahwa apiclientmodul hanya disimpan untuk kompatibilitas ke belakang.

Pertahankan apiclient sebagai alias untuk googleapiclient.

Jadi, Anda benar-benar harus menggunakan googleapiclientdalam kode Anda, karena apiclientalias hanya dipertahankan agar tidak melanggar kode warisan.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

Informasi lebih lanjut: Saya baru saja mengalami masalah ini (Python 3.5.2), dan mengubah nama dalam importpernyataan memperbaikinya. Saya telah memindahkan kode sampel Google ke file di PyCharm, dan ketika PyCharm meminta saya untuk menginstal paket bernama apiclientsaya melakukannya. Ketika saya benar-benar melihat modul yang telah diinstal, itu kecil dan tampaknya tidak terkait dengan Google.
Nathan Wailes

10

apiclienttidak ada dalam daftar perpustakaan pihak ketiga yang disediakan oleh runtime appengine: http://developers.google.com/appengine/docs/python/tools/libraries27 .

Anda perlu menyalin apiclientke direktori proyek Anda & Anda perlu untuk menyalin ini uritemplate& httplib2juga.

Catatan: Pustaka pihak ketiga mana pun yang tidak disediakan dalam daftar dokumentasi harus menyalin ke direktori proyek appengine Anda


1
Saya menggunakan Python Google Translate API, oleh karena itu, saya perlu: apiclient, gflags, httplib2, oauth2client, uritemplate. Terima kasih: D
Huy Tower

Balasan Jorvis lebih relevan bagi mereka yang tidak menjalankan aplikasi. koreksi saya jika saya salah.
Outlier

Apakah ini benar bahwa pemohon tidak termasuk dalam pustaka default? KAMI dapat melihat apiclient sebagai direktori yang tercantum tepat di direktori SDK Google App Engine di PyCharm. Yang mengatakan, meskipun kita melihatnya di sana, kita masih mendapatkan kesalahan dalam pertanyaannya.
Praxiteles

8

Jika tidak ada solusi di atas yang berfungsi untuk Anda, pertimbangkan apakah Anda mungkin telah menginstal python melalui Anaconda. Jika demikian, maka instal pustaka google API dengan conda mungkin memperbaikinya.

Lari:

python --version

Jika Anda mendapatkan sesuatu seperti

Python 3.6.4 :: Anaconda, Inc.

Lalu coba:

conda install google-api-python-client

Seperti yang ditunjukkan bgoodr dalam komentar, Anda mungkin perlu menentukan saluran (think repository) untuk mendapatkan pustaka API Google. Pada saat penulisan ini berarti menjalankan perintah:

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

Lihat lebih lanjut di https://anaconda.org/conda-forge/google-api-python-client


2
Sebenarnya dibutuhkan saluran. Lihat anaconda.org/conda-forge/google-api-python-client (lihat opsi -c).
bgoodr

2
@ Goodgoodr Saya telah memasukkan komentar Anda dalam jawabannya.
Jonathan Hansen

7

Pastikan Anda hanya google-api-python-clientmenginstal. Jika Anda telah apiclientmenginstal, itu akan menyebabkan tabrakan. Jadi, jalankan yang berikut:

sudo pip uninstall apiclient

6

Untuk proyek mesin aplikasi Anda harus menginstal Lib secara lokal dengan mengetik

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

baca lebih lanjut di sini


Ini membuat saya berfungsi, meskipun saya harus mengikuti jawabannya di sini juga untuk menambahkan direktori lib sebagai vendor: stackoverflow.com/a/29681061/1024735
kevinmicke


5

Saya memperbaiki masalah dengan menginstal ulang paket dengan:

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

5

untuk python3 ini bekerja untuk saya:

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

4

Saya memiliki masalah yang sama karena bug dalam pemasangan modul URITemplate.

Ini memecahkan masalah:

pip install --force-reinstall uritemplate.py

3

Saya mendapat kesalahan yang sama ketika mengerjakan proyek untuk mengurai acara kalender terbaru dari Google Kalender.

Menggunakan instalasi standar dengan pip tidak bekerja untuk saya, berikut adalah apa yang saya lakukan untuk mendapatkan paket yang saya butuhkan.

Buka langsung ke sumbernya, di sini ada tautan untuk google-api-python-client , tetapi jika Anda membutuhkan bahasa yang berbeda, seharusnya tidak terlalu berbeda.

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

Klik tombol "Kloning atau Unduh" berwarna hijau di dekat kiri atas dan simpan sebagai file zip. Pindahkan zip ke folder proyek Anda dan ekstrak di sana. Kemudian potong semua file dari folder yang dibuatnya kembali ke root folder proyek Anda.

Ya, ini memang mengacaukan ruang kerja Anda, tetapi banyak kompiler memiliki cara untuk menyembunyikan file.

Setelah melakukan ini standar

from googleapiclient import discovery

bekerja dengan baik.

Semoga ini membantu.


2

"google-api-python-client" membutuhkan:

pip install uritemplate.py

untuk memperbaiki masalah pada GAE Development Server:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery

1

Saya mengalami masalah yang sama. Ini berhasil:

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

Itu hanya bekerja dengan saya ketika saya menggunakan sudo:

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


0

Gunakan ini

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.