使用Poetry向Google Artifact Registry发布Python包报413请求过大错误
问题原因定位
这个问题既不是Poetry的硬限制(Poetry无默认上传大小阈值),也不是GCP Artifact Registry的默认配额限制(AR单Python包默认配额为1GB,远高于你文件的100K),90%以上的概率是配置操作错误导致的请求发往了错误端点,触发了前端413拦截。
解决方案
- 首先修正仓库配置命令的语法错误
你执行的poetry config $repoName $urlOfTheRemoteArtifactRegistry不符合Poetry的仓库配置规范,正确命令需要添加repositories.前缀:
你可以执行poetry config repositories.$repoName $urlOfTheRemoteArtifactRegistrypoetry config --list查看当前配置,确认repositories.$repoName字段已经正确指向你的Artifact Registry地址,地址必须符合格式https://<区域>-python.pkg.dev/<GCP项目ID>/<仓库名>/,末尾的斜杠不可省略。 - 确认构建产物实际大小
你用du查看的是项目源码目录大小,不是发布用的构建产物大小,执行以下命令查看产物尺寸:
如果产物尺寸异常过大,可以在ls -lh dist/pyproject.toml中配置exclude字段过滤不需要打包的文件,示例:[tool.poetry] exclude = ["__pycache__", "tests/*", "*.log", "local_data/*"] - 升级Poetry版本规避兼容性问题
你使用的1.1.7属于2021年的旧版本,对GCP Artifact Registry的上传适配存在缺陷,建议升级到1.4及以上版本:pip install --upgrade poetry - 备用验证方案
若修正配置后还是报错,可以用twine工具验证上传逻辑,排除Poetry本身的问题:# 先构建产物 poetry build # 安装twine pip install twine # 用twine上传,用户名为oauth2accesstoken,密码为gcloud auth print-access-token的输出值 twine upload --repository-url <你的AR仓库URL> dist/*
内容的提问来源于stack exchange,提问作者Data minion
相关产品推荐
相关产品推荐

