Streamlit连接Google Sheets时出现Incorrect padding错误求助
解决Streamlit连接Google Sheets时的
binascii.Error: Incorrect padding错误 这个错误的核心原因是GCP服务账号密钥在Streamlit Secrets中的格式不正确,导致base64解码失败,以下是针对性的解决步骤:
1. 修正Streamlit Secrets中private_key的格式
服务账号JSON里的private_key字段包含带换行的PEM格式密钥,在.streamlit/secrets.toml中必须正确转义换行符:
- 打开下载的GCP服务账号JSON文件,复制完整的
private_key内容(包括-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----) - 在
secrets.toml中,将private_key的换行替换为\n,示例:
[gcp_service_account] private_key = "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\n...\n-----END PRIVATE KEY-----" # 其他字段(project_id、client_email等)按JSON内容如实填写
注意:不要手动修改private_key的内容,只替换换行符为\n
2. 验证服务账号JSON的完整性
- 重新从GCP控制台下载服务账号JSON文件,确保文件未被编辑、截断或损坏
- 检查JSON中的
private_key字段是否完整,没有缺失字符或格式错误
3. 升级依赖包
旧版本的google-auth或pyasn1-modules可能存在解码兼容问题,执行以下命令升级:
pip install --upgrade google-auth pyasn1-modules streamlit
4. 应急修复:补全base64填充符(仅当上述方法无效时)
如果private_key的base64部分长度不是4的倍数,会导致padding错误:
- 计算private_key中
-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----之间的字符串长度 - 如果长度不是4的倍数,在末尾添加
=直到长度为4的倍数(比如长度是1001,就加3个=)
内容的提问来源于stack exchange,提问作者Sina Kian
相关产品推荐
相关产品推荐

