ImportError: Немає модуля з іменем apiclient.discovery


153

Я отримав цю помилку в Python Google App Engine, використовував API Google Translate, але я не знаю, як виправити,

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

Я спробую встановити середовище, яке вказує на SDK Google App Engine , і знову завантажувати в Google Apps Engine, завжди отримувати помилку ,

Помилка: Помилка сервера

Сервер зіткнувся з помилкою та не зміг виконати ваш запит. Якщо проблема не зникає, повідомте про свою проблему та згадуйте це повідомлення про помилку та запит, який її спричинив.

Скажіть, будь ласка, як виправити,

Дякую

ОНОВЛЕННЯ: Виправлено Дотримуйтесь довідки Nijjin, я усунув проблеми, додавши наступні папки,

apiclient, gflags, httplib2, oauth2client, uritemplate

Якщо у вас все-таки виникають проблеми, будь ласка, розгляньте нижче Відповідь цієї сторінки, щоб отримати більше інформації. колишній : Варумна відповідь тощо ...


Ви включили apiclientкаталог кодів у свій проект appengine?
Ніджин Нараянан

ти маєш на увазі Зовнішні бібліотеки? (Це SDK / Google App Engine SDK / google-api-python-client / apiclient / discovery.py)? Я використовую IDEA IntelliJ. Дякуємо, що надали більше інформації
Huy Tower

Переконайтеся, що ви не запускаєте свою програму як sudo, тому що Pip встановлює libs у вашому домі користувача, тоді у root користувача немає цих бібліотекpip show PyDrive
deFreitas

cloud.google.com/sdk/docs може допомогти в цьому процесі
Xiao

Це перша сторінка, на яку я потрапив, але я пропустив відповіді нижче спочатку від Ніджіна та Варуна. Потрібно включити модуль у робочий каталог додатків як "сторонній пакет", дотримуючись інструкцій за посиланням. У Linux Ubuntu мені також довелося використовувати sudo при використанні перемикача -t для встановлення на lib /.
алхімія

Відповіді:


240

Ви можете отримати ці залежності за допомогою цієї простої установки:

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

Це описано на сторінці швидкого старту для python .


7
Я зіткнувся з такою ж помилкою, зробивши саме це. Ну, я встановив його, C:\>C:\Python27\Scripts\easy_install-script.py --upgrade google-api-python-clientі він говорить Installed c:\python27\lib\site-packages\google_api_python_client-1.3.1-py2.7.eggі намагається встановити зновуgoogle-api-python-client 1.3.1 is already the active version in easy-install.pth
Едмунд Сульзанок

5
Посилання, надане у відповіді, перейшло до Googles Початок роботи з Python
Натан

4
Я поняття не маю, чому вищезгадана команда без sudoмене працювала.
mtk

5
Для Python 3, pip потрібно замінити на pip3 у наведеній вище команді. Деяким я вважаю, це може бути не очевидно.
Еммет Б

1
Використовуючи Debian 9 Stretch, я використав команду sudo apt-get install python-googleapi python-oauth2clientта команду sudo apt-get install python3-googleapi python3-oauth2client. Це працювало ідеально, і я віддаю перевагу саме цьому, бо мені достатньо одного менеджера пакунків.
Джерард

120

apiclientбула оригінальною назвою бібліотеки.
У якийсь момент його переключили, щоб бути googleapiclient.

Якщо ваш код працює в Google App Engine, обидва повинні працювати.

Якщо ви самі запускаєте додаток, при цьому встановлений клієнт google-api-python , обидва повинні також працювати.

Хоча, якщо ми подивимось на вихідний код модуля apiclientпакету__init__.py , ми можемо побачити, що apiclientмодуль просто зберігався для зворотної сумісності.

Збережіть аплікант як псевдонім для googleapiclient.

Отже, ви дійсно повинні використовувати googleapiclientу своєму коді, оскільки apiclientпсевдонім просто підтримувався, щоб не порушити застарілий код.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

Додаткова інформація: У мене щойно була ця проблема (Python 3.5.2), і зміна імені у importвиписці виправила її. Я перемістив зразок коду Google у файл у PyCharm, і коли PyCharm запропонував мені встановити пакет, назване apiclientя це зробив. Коли я насправді переглянув встановлений ним модуль, він був крихітним і, здається, не пов’язаний з Google.
Натан Уейлз

10

apiclientвідсутня у списку сторонніх бібліотек, наданих під час виконання аппендину: http://developers.google.com/appengine/docs/python/tools/libraries27 .

Вам потрібно скопіювати apiclientу свій каталог проектів, а також скопіювати ці uritemplate& httplib2.

Примітка: Будь-яка стороння бібліотека, яка не міститься у списку документації, повинна скопіювати у каталог проектів додатків


1
Я використовував Python API Google Translate, тому мені потрібні: apiclient, gflags, httplib2, oauth2client, uritemplate. Спасибі: D
Huy Tower

Відповідь Джорвіса більш актуальна для тих, хто не має заявки. виправте мене, якщо я помиляюся.
Аверліє

Чи справді це правда, що apiclient не включений до бібліотек за замовчуванням? Ми можемо бачити apiclient як каталог, вказаний прямо в каталозі SDK Google App Engine в PyCharm. Це сказало, хоча ми бачимо його там, ми все ще отримуємо помилку в його питанні.
Праксителес

8

Якщо жодне з перерахованих вище рішень не працює для вас, подумайте, чи можливо ви встановили python через Anaconda. У такому випадку встановлення бібліотеки API google з conda може виправити це.

Виконати:

python --version

Якщо ви отримаєте щось на кшталт

Python 3.6.4 :: Anaconda, Inc.

Потім спробуйте:

conda install google-api-python-client

Як зазначив bgoodr у коментарі, вам може знадобитися вказати канал (репозиторій думаю), щоб отримати бібліотеку API Google. На момент написання це означає виконання команди:

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

Дивіться більше на https://anaconda.org/conda-forge/google-api-python-client


2
Насправді канал очевидно потрібен. Див. Anaconda.org/conda-forge/google-api-python-client (див. Параметр -c).
bgoodr

2
Дякую @bgoodr Я включив ваш коментар у відповідь.
Джонатан Хансен

7

Переконайтеся, що ви тільки google-api-python-clientвстановили. Якщо ви apiclientвстановили, це спричинить зіткнення. Отже, запустіть наступне:

sudo pip uninstall apiclient

6

Для проекту двигуна програми потрібно встановити ліб локально, набравши текст

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

докладніше читайте тут


Це змусило мене працювати, хоча я повинен слідувати відповідь тут , а також додати каталог Lib як постачальника: stackoverflow.com/a/29681061/1024735
kevinmicke

5

Існує завантаження бібліотеки клієнтів Python Client Google, яка містить бібліотеку та всі її залежності, названі як - то на зразок google-api-python-client-gae- <version> .zip у розділі завантажень проекту. Просто розпакуйте це у вашому проекті App Engine.


5

Я вирішив проблему, перевстановивши пакет із:

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

5

для python3 це працювало для мене:

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

4

У мене була така ж проблема через помилку в установці модуля URITemplate.

Це вирішило проблему:

pip install --force-reinstall uritemplate.py

3

Я отримав цю саму помилку під час роботи над проектом для аналізу останніх подій календаря з Google Calendar.

Використання стандартної установки з pip для мене не вийшло, ось що я зробив, щоб отримати потрібні мені пакунки.

Перейдіть безпосередньо до джерела, ось посилання на клієнт google-api-python , але якщо вам потрібна інша мова, вона не повинна бути занадто різною.

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

Клацніть на зеленій кнопці "Клонувати або завантажити" вгорі ліворуч і збережіть її як поштовий файл. Перемістіть блискавку до папки свого проекту та витягніть її там. Потім виріжте всі файли із створеної вами папки в корінь папки вашого проекту.

Так, це заважає вашому робочому простору, але у багатьох компіляторів є способи приховати файли.

Після цього це стандарт

from googleapiclient import discovery

працює чудово.

Сподіваюся, це допомагає.


2

"google-api-python-client" вимагає:

pip install uritemplate.py

щоб вирішити проблему на сервері розробки GAE:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery

1

Я зіткнувся з тим же питанням. Це спрацювало:

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

Зі мною це працювало лише тоді, коли я використовував судо:

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

1

Я отримував таку ж помилку, навіть дотримуючись посібника Google за адресою https://developers.google.com/drive/api/v3/quickstart/python , тоді я зрозумів, що потрібно викликати так:

python3 quickstart.py

Замість:

python quickstart.py <-- WRONG

(Зверніть увагу на " 3")

Працювали бездоганно.

Я використовую Ubuntu 18.04.4 LTS.


0

використовуй це

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.