programing

Python 프로젝트에서 Google API를 사용하도록 GOOGLE_APPLICATION_CREEDENCALES 설정

powerit 2023. 9. 20. 20:50
반응형

Python 프로젝트에서 Google API를 사용하도록 GOOGLE_APPLICATION_CREEDENCALES 설정

저는 프로그래밍 초보자이고 구글 API 사용법을 배우려고 합니다.Python.

내가 가지고 있습니다.

  1. 구글 클라우드에서 프로젝트를 만들고 내가 사용하고 싶은 API를 활성화 시켰습니다.Natural Language API.
  2. 크리덴셜을 생성하고 크리덴셜 JSON 파일을 다운로드하여 다음과 같이 저장했습니다.apikey.JSON
  3. 터미널에서 다음 명령을 실행했습니다: 내보내기GOOGLE_APPLICATION_CREDENTIALS=apikey.JSON, 오류가 터지지 않았습니다.

하지만 가장 간단한 코드를 실행해도 credential 변수를 찾을 수 없다는 오류가 있습니다.

저는 지금 무엇을 해야 할지 잘 모르겠습니다.제발 도와주세요.

이게 내 암호입니다.

from google.cloud import language

def sentiment_text(text):

    client = language.LanguageServiceClient()

    sentiment = client.analyze_sentiment(text).document_sentiment

    print('Score: {}'.format(sentiment.score))
    print('Magnitude: {}'.format(sentiment.magnitude))

sampletxt='Python is great'

sentiment_text(sampletxt)

그리고 오류가 있습니다.

> Traceback (most recent call last):   File
> "/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple.py", line
> 21, in <module>
>     sentiment_text(sampletxt)
> 
>   File
> "/Users/YELI1/Downloads/googlecloud/sentimentanalysis/simple.py", line
> 5, in sentiment_text
>     client = language.LanguageServiceClient()
> 
>   File
> "/usr/local/lib/python3.6/site-packages/google/cloud/gapic/language/v1/language_service_client.py",
> line 147, in __init__
>     ssl_credentials=ssl_credentials)
> 
>   File "/usr/local/lib/python3.6/site-packages/google/gax/grpc.py",
> line 106, in create_stub
> 
>     credentials = _grpc_google_auth.get_default_credentials(scopes)   File
> "/usr/local/lib/python3.6/site-packages/google/gax/_grpc_google_auth.py",
> line 62, in get_default_credentials
>     credentials, _ = google.auth.default(scopes=scopes)
> 
>   File
> "/usr/local/lib/python3.6/site-packages/google/auth/_default.py", line
> 282, in default
> 
>     raise exceptions.DefaultCredentialsError(_HELP_MESSAGE) google.auth.exceptions.DefaultCredentialsError: Could not
> automatically determine credentials. Please set
> GOOGLE_APPLICATION_CREDENTIALS or explicitly create credential and
> re-run the application. For more information, please see
> https://developers.google.com/accounts/docs/application-default-credentials.

값이 환경에 없습니다.

import os 
print(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) 
   File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework‌​/Versions/3.6/lib/py‌​thon3.6/os.py", line 669, in getitem  
raise KeyError(key) from None KeyError: 'GOOGLE_APPLICATION_CREDENTIALS'

주피터 노트북을 작업하는 경우 Python 코드에서 GOOGOL_APPLICATION_CREADENCES 환경 변수를 설정하려면:

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/path/to/file.json"

나는 이 게시물이 답변된 것을 알고 있지만 다음은 더 명확한 방법입니다.GOOGLE_APPLICATION_CREDENTIALS변수.

client = language.LanguageServiceClient.from_service_account_json("/path/to/file.json")

자격 증명을 명시적으로 언급하여 아래와 같이 클라이언트에게 전달함으로써 작동하는 한 가지 더 간단한 방법이 있습니다.

from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file("your-json-path-with-filename.json")
client = language.LanguageServiceClient(credentials=credentials)

메모리에 자격 증명(예: 환경 변수)이 있는데 이에 대한 파일을 생성하지 않으려는 경우:

from google.cloud import storage
from google.oauth2 import service_account

gcp_json_credentials_dict = json.loads(gcp_credentials_string)
credentials = service_account.Credentials.from_service_account_info(gcp_json_credentials_dict)
client = storage.Client(project=gcp_json_credentials_dict['project_id'], credentials=credentials)

python 3.7 및google-cloud-storage==1.35.0

코드가 로컬 개발 환경에서 실행 중인 경우 Google 계정과 연결된 자격 증명을 사용하는 것이 가장 좋습니다.

  1. 아직 설치하지 않은 경우 gcloud CLI를 설치하고 초기화합니다.

  2. 자격 증명 파일 만들기:

    gcloud auth application-default login
    

로그인 화면이 표시됩니다.로그인하면 ADC에서 사용하는 로컬 자격 증명 파일에 자격 증명이 저장됩니다.그러면 자격 증명을 자동으로 확인할 수 있습니다.

이를 테스트하는 또 다른 방법은 터미널에 들어가서 다음을 입력하는 것입니다.

# Linux/Unix
set | grep GOOGLE_APPLICATION_CREDENTIALS 

아니면

# Windows:
set | Select-String -Pattern GOOGLE_APPLICATION_CREDENTIALS 

환경 변수와 환경 변수가 위치한 경로가 표시됩니다.이것이 아무것도 반환하지 않으면 변수를 설정하지 않았거나 잘못된 경로가 설정되었을 수 있습니다.

creds = Credentials.from_authorized_user_file('token.json', SCOPES)

언급URL : https://stackoverflow.com/questions/45501082/set-google-application-credentials-in-python-project-to-use-google-api

반응형