无需默认凭证调用Google API的方法及DefaultCredentialsError解决
不使用默认凭证调用Google APIs的替代方法
错误信息(翻译后)
DefaultCredentialsError: 未找到默认凭证。如需设置应用默认凭证,请查看相关文档获取更多信息。 Traceback: 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", 第534行, 在 _run_script中 exec(code, module.__dict__) 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/App.py", 第63行, 在 <module>中 response=get_gemini_response(input_prompt,image_data,input) 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/App.py", 第16行, 在 get_gemini_response中 response=model.generate_content([input,image[0],prompt]) 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/generativeai/generative_models.py", 第241行, 在 generate_content中 self._client = client.get_default_generative_client() 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/generativeai/client.py", 第230行, 在 get_default_generative_client中 return _client_manager.get_default_client("generative") 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/generativeai/client.py", 第161行, 在 get_default_client中 client = self.make_client(name) 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/generativeai/client.py", 第121行, 在 make_client中 client = cls(**self.client_config) 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/ai/generativelanguage_v1beta/services/generative_service/client.py", 第433行, 在 __init__中 self._transport = Transport( 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/ai/generativelanguage_v1beta/services/generative_service/transports/grpc.py", 第150行, 在 __init__中 super().__init__( 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/ai/generativelanguage_v1beta/services/generative_service/transports/base.py", 第98行, 在 __init__中 credentials, _ = google.auth.default( 文件 "/Users/pulkitrajput/PycharmProjects/InVoice-Extractor/venv/lib/python3.9/site-packages/google/auth/_default.py", 第691行, 在 default中 raise exceptions.DefaultCredentialsError(_CLOUD_SDK_MISSING_CREDENTIALS)
可用的替代认证方案
- 直接使用API密钥:针对Gemini等生成式AI API,初始化时直接传入API密钥即可绕过默认凭证机制。示例代码:
import google.generativeai as genai # 配置API密钥 genai.configure(api_key="你的API密钥") # 初始化模型 model = genai.GenerativeModel('gemini-pro-vision') # 正常调用生成内容接口 response = model.generate_content([input_content, image_data, prompt])
- 加载服务账号密钥文件:如果持有服务账号的JSON密钥文件,可在代码中直接加载该凭证。示例代码:
import google.generativeai as genai from google.oauth2 import service_account # 从本地文件加载服务账号凭证 credentials = service_account.Credentials.from_service_account_file( "/path/to/your/service-account-key.json" ) # 配置凭证 genai.configure(credentials=credentials) model = genai.GenerativeModel('gemini-pro-vision')
- 通过环境变量指定凭证:设置
GOOGLE_APPLICATION_CREDENTIALS环境变量指向服务账号密钥文件路径,SDK会自动读取该凭证,无需修改代码。终端执行命令:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-key.json"
之后正常运行Python脚本即可。
内容的提问来源于stack exchange,提问作者Pulkit Rajput
相关产品推荐
相关产品推荐

