programing

Translate API를 사용하는 Python App Engine 앱에서 ImportError: No module name piclient.discovery라는 오류가 발생하는 이유는 무엇입니까?

stoneblock 2023. 6. 13. 21:57

Translate API를 사용하는 Python App Engine 앱에서 ImportError: No module name piclient.discovery라는 오류가 발생하는 이유는 무엇입니까?

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

여전히 문제가 있는 경우 아래 페이지의 답변을 참조하여 자세한 정보를 얻으십시오.ex. : 바룸 답변 등...

이 단순 설치를 통해 다음과 같은 종속성을 얻을 수 있습니다.

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

이것은 python의 빠른 시작 페이지에 설명되어 있습니다.

apiclient라이브러리의 원래 이름입니다.
어느 순간, 그것은 다음과 같이 바뀌었습니다.googleapiclient.

코드가 Google App Engine에서 실행 중이면 둘 다 작동해야 합니다.

Google-api-python-client가 설치된 상태에서 직접 응용 프로그램을 실행하는 경우 둘 다 작동해야 합니다.

하지만, 패키지 모듈의 소스 코드를 보면, 우리는 그것을 알 수 있습니다.apiclient모듈은 이전 버전과의 호환성을 위해 보관되었습니다.

클라이언트를 Google 클라이언트의 별칭으로 유지합니다.

로 그서은, 당신정사합니다야용해말을 사용해야 합니다.googleapiclient에서, , 그이로후.apiclient기존 코드를 깨지 않도록 별칭을 유지했습니다.

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

위의 솔루션 중 어떤 것도 작동하지 않는 경우 아나콘다를 통해 파이썬을 설치했을 수도 있습니다.이 경우 구글 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 에서 더 보기

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

.apiclient디렉토리에 .uritemplate&httplib2도 마찬가지야

참고: 설명서 목록에 제공되지 않는 타사 라이브러리는 앱 엔진 프로젝트 디렉터리에 복사해야 합니다.

다음 항목만 있는지 확인합니다.google-api-python-client설치된.가지고 계신다면,apiclient설치되어 있으면 충돌이 발생합니다.따라서 다음을 실행합니다.

sudo pip uninstall apiclient

다음을 사용하여 패키지를 다시 설치하여 문제를 해결했습니다.

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

앱 엔진 프로젝트의 경우 lib를 입력하여 로컬로 설치해야 합니다.

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

자세한 내용은 여기를

프로젝트의 다운로드 섹션에 있는 google-api-python-client-<version>.zip과 같은 이름의 라이브러리와 모든 종속성을 포함하는 Google API Python Client 라이브러리에 대한 다운로드가 있습니다.앱 엔진 프로젝트에 압축을 풉니다.

python3의 경우 이것은 나에게 효과가 있었습니다.

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

URI Template Module 설치에 버그가 있어서 저도 같은 문제가 있었습니다.

이를 통해 문제가 해결되었습니다.

pip install --force-reinstall uritemplate.py

Google 일정관리에서 최근 일정관리 이벤트를 구문 분석하는 프로젝트를 수행할 때 동일한 오류가 발생했습니다.

pip와 함께 표준 설치를 사용하는 것은 저에게 효과가 없었습니다. 여기 필요한 패키지를 얻기 위해 제가 한 일이 있습니다.

소스로 직접 이동합니다. 여기 구글-api-python-client에 대한 링크가 있지만, 다른 언어가 필요하다면 너무 다르지 않아야 합니다.

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

왼쪽 상단에 있는 녹색 "복제 또는 다운로드" 단추를 클릭하여 zip 파일로 저장합니다.zip을 프로젝트 폴더로 이동하여 압축을 풉니다.그런 다음 생성된 폴더의 모든 파일을 프로젝트 폴더의 루트로 다시 잘라냅니다.

예, 이렇게 하면 작업 공간이 복잡해지지만 대부분의 컴파일러는 파일을 숨길 수 있습니다.

이 작업을 수행한 후 표준

from googleapiclient import discovery

잘 작동합니다.

이게 도움이 되길 바랍니다.

"google-api-api-vlan-client"에는 다음이 필요합니다.

pip install uritemplate.py

GAE Development Server의 문제를 해결하려면:

from googleapiclient.discovery import build

ImportError: No module named googleapiclient.discovery

는 습했니다를 설치했습니다.google-api-python-clientPIP를 사용하지만 여전히 오류가 표시되어 업그레이드를 시도하고 오류를 해결하는 데 도움이 됩니다.

"윈도우"를 사용하는 경우

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

나에게 도움이 되기 때문에 당신에게도 도움이 될 것입니다 :)

같은 문제가 발생했습니다.이것은 효과가 있었습니다.

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

제가 sudo를 사용했을 때만 작동했습니다.

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

https://developers.google.com/drive/api/v3/quickstart/python, 에서 Google의 가이드를 팔로우한 후에도 동일한 오류가 발생했습니다. 그 때 다음과 같이 호출해야 한다는 것을 깨달았습니다.

python3 quickstart.py

다음 대신:

python quickstart.py <-- WRONG

(참고: "3")

완벽하게 작동했습니다.

사용 중Ubuntu 18.04.4 LTS.

이것을 사용합니다.

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

Python 모듈을 만들고 설치한 후 스크립트를 실행하는 경우에도 동일한 오류가 발생할 수 있습니다.pip또는pipx지휘권이 경우 프로젝트를 올바르게 실행하기 위해 필요한 최소한의 항목을 선언했는지 확인합니다.install_requires의 섹션setup.py파일, 이 경우:

install_requires=[
    "google-api-python-client>=1.12.3",
    "google-auth-httplib2>=0.0.4",
    "google-auth-oauthlib>=0.4.1"
]

IDE의 인터프리터가 잘못된 가상 환경을 가리키는 경우에도 이 문제가 발생할 수 있습니다.VSCODE에서는 수동으로 올바른 인터프리터로 설정하여 문제를 해결했습니다.

(2021년 5월) 원래 질문 이후 약 8년이 지났고, 그 이후로 여러 제품 변경이 발생했기 때문에, Python App Engine에서 Google Translate API를 사용하고자 하는 신규 개발자들은 다음과 같은 몇 가지 변경 사항을 적용할 수 있습니다.

  1. 제품 정보/비용:이제 Google 번역 API를 Google 클라우드 번역 API로 사용할 수 있습니다.무료는 아니지만(신용카드와 같은 금융상품으로 지원되는 청구 계정을 만들어야 함) 매달 번역된 문자 할당량을 받게 됩니다.자세한 내용은 가격 페이지를 참조하십시오.마찬가지로 이전에는 신용 카드 없이 앱 엔진 을 만들 수 있었지만 2019년 11월부터는 더 이상 새 정책을 통해 만들 수 없습니다.요금이 부과되려면 초과해야 하는 "항상 무료" 계층 할당량이 여전히 충분합니다.자세한 내용은 앱 엔진 가격 페이지를 참조하십시오.

  2. 클라이언트 라이브러리:사용하기 보다는apiclient또는googleapiclientGoogle APIs 클라이언트 라이브러리의 일부인 낮은 수준의 다중 제품 및 플랫폼 수준의 클라이언트 라이브러리에서는 더 높은 수준의 제품 중심의 Google Cloud 클라이언트 라이브러리를 권장합니다.즉, 특정 Cloud Translation 클라이언트 라이브러리(실제로는 basic/v2/Python 2 또는 advanced/v3/Python 3)가 있습니다. 이러한 라이브러리는 더 높은 수준이며 훨씬 더 쉽게 사용할 수 있습니다.

  • 클라이언트 lib 추가:pip install -U pip google-cloud-translate(또는)pip3)
  • 코드 샘플을 사용하면 다음과 같이 간단하게 만들 수 있습니다.
'translate_demo.py - demo the Cloud Translation API'
from __future__ import print_function
import google.auth
from google.cloud import translate

TRANSLATE = translate.TranslationServiceClient()
_, PROJECT_ID = google.auth.default()
PARENT = 'projects/{}'.format(PROJECT_ID)
TARGET_LANG = 'es'
TEXT = 'Hello world'
DATA = {
    'parent': PARENT,
    'contents': [TEXT],
    'target_language_code': TARGET_LANG,
}
try:                # Python 3/advanced/v3
    rsp = TRANSLATE.translate_text(request=DATA)
except TypeError:   # Python 2/basic/v2
    rsp = TRANSLATE.translate_text(**DATA)
print(TEXT, '=', rsp.translations[0].translated_text)

Python 2와 3에서도 수정 없이 작동합니다.

$ python2 translate_demo.py
Hello world = Hola Mundo
$ python3 translate_demo.py
Hello world = Hola Mundo

이 코드 스니펫은 App Engine에 매우 쉽게 적용할 수 있습니다(아래 자세히 참조). 특히 기본 서비스 계정을 활용하여 서비스 계정을 만들고, 공용/개인 키 쌍을 만들고, JSON 자격 증명 파일을 다운로드해야 하는 등 서비스 계정을 가지고 장난칠 필요가 없기 때문에 프로토타이핑을 수행하는 경우에는 더욱 그렇습니다.GOOGLE_APPLICATION_CREDENTIALS환경변수 등운영 환경으로 전환할 준비가 되어 자체 서비스 계정을 만들어야 하는 경우 문서에서 이 페이지를 확인하십시오.

또한 App Engine 자체에도 상당한 변화가 있었습니다. 원래 Python 2 App Engine 서비스에는 수많은 전용 API(데이터스토어, Memcache, Task Queues 등)가 내장되어 있었습니다."벤더 록인"에 대한 사용자 피드백으로 인해 차세대 Python 3 App Engine 서비스는 개발자들을 이러한 서비스에서 해방시키기 위해 만들어졌습니다.대신 제품화된 동일한 서비스(: 클라우드 데이터스토어, 클라우드 메모리 스토어, 클라우드 작업)를 활용할 수 있습니다.Google Cloud 팀은 마이그레이션 가이드를 작성했으며, 사용자가 애플리케이션을 Python 3으로 이식할 때 이러한 번들되지 않은 서비스로 마이그레이션할 수 있도록 실습 튜토리얼, 코드 샘플 및 비디오를 추가했습니다.

클라우드 기능(FaaS) 또는 Cloud Run(컨테이너화/관리형 CaaS)과 같은 앱 엔진 이외의 Google Cloud 서버리스 컴퓨팅 플랫폼고려하고 있다면, Python 2 및 3, 8가지 방법으로 배포할 수 있는 이 번역 API 샘플 앱을 확인하십시오.로컬에서 Flask의 개발 서버를 사용하여 App Engine, Cloud Functions 또는 Cloud Run에 대한 모든 작업을 수행할 수 있습니다.플랫폼의 유연성을 보여줄 뿐만 아니라 사용자가 플랫폼 간의 차이점을 더 잘 이해할 수 있도록 지원합니다.

언급URL : https://stackoverflow.com/questions/18267749/why-is-my-python-app-engine-app-using-the-translate-api-getting-an-error-of-impo