ImportError : 이름이 apiclient.discovery 인 모듈이 없습니다.


153

Google App Engine의 Python에서 Google Translate API를 사용했지만 이 오류가 발생 했지만 해결 방법을 모르겠습니다.

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

Google App Engine SDK를 나타내는 환경 을 설정 하고 Google Apps Engine에 다시 업로드하면 항상 오류가 발생합니다 .

오류 : 서버 오류

서버에 오류가 발생하여 요청을 완료 할 수 없습니다. 문제가 지속되면 문제를보고하고이 오류 메시지와 문제를 일으킨 쿼리를 언급하십시오.

고치는 방법을 알려주세요.

감사

업데이트 : 수정 Nijjin의 도움에 따라 다음 폴더를 추가하여 문제를 해결했습니다.

apiclient, gflags, httplib2, oauth2client, uritemplate

여전히 문제가 발생하면이 페이지의 답변 아래에서 추가 정보를 얻으십시오. 전의. : Varum 답변 등 ...


apiclientappengine 프로젝트에 코드 디렉토리 를 포함 시켰습니까?
— Nijin Narayanan

외부 라이브러리를 의미합니까? (/ Google App Engine SDK / google-api-python-client / apiclient / discovery.py입니까?) IDEA IntelliJ를 사용합니다. 자세한 정보를 제공해 주셔서 감사합니다
— Huy Tower

확인 핍이 사용자의 집에서 libs와 설치 때문에 sudo는 귀하의 프로그램을 실행하지 않는 확인한 다음 루트 사용자는이 라이브러리를 가지고 있지 않습니다pip show PyDrive
— deFreitas

cloud.google.com/sdk/docs 가 프로세스에 도움이 될 수 있습니다
— Xiao

이것은 내가 처음 쳤던 페이지이지만 Nijin과 Varun에서 처음에 아래 답변을 놓쳤습니다. 링크의 지시에 따라 앱 작업 ​​디렉토리에 모듈을 '타사 패키지'로 포함시켜야합니다. Linux Ubuntu에서는 -t 스위치를 사용하여 lib /에 설치할 때 sudo를 사용해야했습니다.
— 연금술

답변:


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
— 에드먼드 Sulzanok을

5
답변에 제공된 링크는 Google 시작하기 Python으로 시작
— Nathan

4
나는 왜 위의 명령 sudo이 나를 위해 일 하지 않았는지 전혀 모른다 .
— mtk

5
Python 3의 경우 위 명령에서 pip를 pip3으로 바꿔야합니다. 내가 믿는 일부에게는 분명하지 않을 수 있습니다.
— Emmet B

1
Debian 9 Stretch 사용 명령 sudo apt-get install python-googleapi python-oauth2client과 명령을 사용했습니다 sudo apt-get install python3-googleapi python3-oauth2client. 하나의 패키지 관리자로 충분하기 때문에 완벽하게 작동 했으며이 방법을 선호합니다.
— Gerard

120

apiclient도서관의 원래 이름이었습니다.
어느 시점에서로 전환되었습니다 googleapiclient.

코드가 Google App Engine에서 실행중인 경우 둘 다 작동합니다.

google-api-python-client가 설치된 상태에서 애플리케이션을 직접 실행하는 경우 둘 다 작동합니다.

패키지 모듈 의 소스 코드를apiclient__init__.py 살펴보면 apiclient모듈이 이전 버전과의 호환성을 위해 단순히 유지되어 있음을 알 수 있습니다 .

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과 관련이없는 것 같습니다.
— Nathan Wailes

10

apiclientappengine 런타임에서 제공하는 타사 라이브러리 목록에 없습니다 : http://developers.google.com/appengine/docs/python/tools/libraries27 .

당신은 복사 할 필요가 apiclient프로젝트 디렉토리 및 이러한 복사해야 uritemplate&httplib2 너무.

참고 : 문서 목록에없는 타사 라이브러리는 appengine 프로젝트 디렉토리에 복사해야합니다.


1
Google Translate API의 Python을 사용했기 때문에 apiclient, gflags, httplib2, oauth2client, uritemplate이 필요합니다. 감사합니다 : D
— Huy Tower

Jorvis의 답변은 응용 프로그램을 실행하지 않는 사람들과 더 관련이 있습니다. 내가 틀렸다면 나를 바로 잡으십시오.
— Outlier

apiclient가 기본 라이브러리에 포함되어 있지 않다는 것이 사실입니까? apiclient를 PyCharm의 Google App Engine SDK 디렉토리에 나열된 디렉토리로 볼 수 있습니다. 그것은 비록 우리가 거기에서 그것을 볼지라도 우리는 여전히 그의 질문에 오류를 받고 있다고 말했습니다.
— Praxiteles

8

위의 해결책 중 어느 것도 효과가 없다면 Anaconda를 통해 파이썬을 설치했는지 고려하십시오. 이 경우 conda와 함께 Google API 라이브러리를 설치하면 문제가 해결 될 수 있습니다.

운영:

python --version

당신이 같은 것을 얻는다면

Python 3.6.4 :: Anaconda, Inc.

그런 다음 시도하십시오.

conda install google-api-python-client

bgoodr이 댓글에서 지적했듯이 Google API 라이브러리를 얻으려면 채널을 지정해야합니다 (저장소 생각). 작성 당시 이것은 명령을 실행하는 것을 의미합니다.

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 감사합니다. 귀하의 의견을 답변에 포함 시켰습니다.
— Jonathan Hansen

7

google-api-python-client설치되어 있는지 확인하십시오 . apiclient설치 한 경우 충돌이 발생합니다. 따라서 다음을 실행하십시오.

sudo pip uninstall apiclient



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 캘린더에서 최근 캘린더 일정을 구문 분석하기 위해 프로젝트를 진행할 때 이와 동일한 오류가 발생했습니다.

pip와 함께 표준 설치를 사용하면 효과가 없었습니다. 필요한 패키지를 얻으려면 다음과 같이하십시오.

소스로 직접 이동하십시오. 여기는 google-api-python-client 의 링크입니다. 있지만 다른 언어가 필요한 경우 너무 다르면 안됩니다.

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

왼쪽 상단 근처에있는 녹색 "복제 또는 다운로드"버튼을 클릭하여 zip 파일로 저장하십시오. zip을 프로젝트 폴더로 이동하고 압축을 풉니 다. 그런 다음 생성 된 폴더에서 모든 파일을 프로젝트 폴더의 루트로 다시 자릅니다.

예, 이것은 작업 공간을 어지럽히 지 만 많은 컴파일러는 파일을 숨길 수있는 방법이 있습니다.

이것을 표준으로 한 후

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를 사용할 때만 작동했습니다.

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


0

이것을 사용하십시오

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.