You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyinstaller打包EXE后Google API build()失败,IDE运行正常

问题解决方案

一、IDE中 invalid_scope 错误处理

首先明确:访问公开播放列表不需要OAuth授权,只需要使用API Key即可。你当前的错误是误用了OAuth凭证调用无需授权的接口,且OAuth的scope配置不正确导致的。

处理步骤:

  • 替换凭证类型:删除代码中OAuth认证相关逻辑(比如OAuth2Credentials相关代码),改用API Key认证。
  • 正确初始化YouTube服务,示例代码:
    from googleapiclient.discovery import build
    
    API_KEY = "你的Google Cloud API密钥"
    youtube = build('youtube', 'v3', developerKey=API_KEY)
    
    # 调用公开播放列表接口示例
    request = youtube.playlists().list(
        part="snippet,contentDetails",
        id="目标公开播放列表ID",
        maxResults=25
    )
    response = request.execute()
    
  • 额外检查:确保你的API Key在Google Cloud控制台中已经启用了YouTube Data API v3权限。

二、Pyinstaller打包后 build() 阶段崩溃(mTLS连接失败)

Pyinstaller打包时可能未正确包含Google API客户端所需的TLS证书或依赖文件,导致无法建立mTLS连接。可尝试以下方案:

方案1:手动指定证书路径

Google API客户端依赖系统证书,打包后可能无法自动找到,手动指定证书路径:

  1. 找到你Python环境中的证书文件,通常路径为:Lib\site-packages\certifi\cacert.pem
  2. 在代码中添加环境变量配置,指向打包后的证书文件(假设证书和exe同目录):
    import os
    import certifi
    
    cert_path = os.path.join(os.path.dirname(__file__), 'cacert.pem')
    os.environ['REQUESTS_CA_BUNDLE'] = cert_path
    os.environ['SSL_CERT_FILE'] = cert_path
    
  3. 打包时把证书文件包含到输出目录:
    pyinstaller --add-data "你的证书路径\cacert.pem;." 你的脚本文件名.py
    

方案2:强制包含缺失的依赖

Google API客户端的部分动态导入可能被Pyinstaller忽略,用hiddenimports参数强制包含:

pyinstaller --hidden-import googleapiclient --hidden-import googleapiclient.discovery --hidden-import googleapiclient.http 你的脚本文件名.py

方案3:临时禁用mTLS(仅测试用)

如果上述方法无效,可尝试禁用Google API客户端的mTLS要求,构建服务时添加参数:

youtube = build('youtube', 'v3', developerKey=API_KEY, static_discovery=False)

注意:禁用mTLS会降低安全性,仅作为临时测试方案,生产环境不建议使用。

内容的提问来源于stack exchange,提问作者user15846642

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:01:02