Python 프로젝트에서 Google API를 사용하도록 GOOGLE_APPLICATION_CREEDENCALES 설정
저는 프로그래밍 초보자이고 구글 API 사용법을 배우려고 합니다.Python
.
내가 가지고 있습니다.
- 구글 클라우드에서 프로젝트를 만들고 내가 사용하고 싶은 API를 활성화 시켰습니다.
Natural Language API
. - 크리덴셜을 생성하고 크리덴셜 JSON 파일을 다운로드하여 다음과 같이 저장했습니다.
apikey.JSON
- 터미널에서 다음 명령을 실행했습니다: 내보내기
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/python3.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 계정과 연결된 자격 증명을 사용하는 것이 가장 좋습니다.
아직 설치하지 않은 경우 gcloud CLI를 설치하고 초기화합니다.
자격 증명 파일 만들기:
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
'programing' 카테고리의 다른 글
modf()를 사용하지 않고 플로트의 분수 부분 가져오기 (0) | 2023.09.25 |
---|---|
두 데이터베이스의 구조를 비교하시겠습니까? (0) | 2023.09.25 |
"내부/modules/cj/loader.js:582 throw err" (0) | 2023.09.20 |
브라우저의 스크롤 바 크기를 얻으려면 어떻게 해야 합니까? (0) | 2023.09.20 |
이 C 코드가 이 C++ 코드보다 빠른 이유는 무엇입니까? 파일에서 가장 큰 줄을 사용합니다. (0) | 2023.09.20 |