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.