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

如何用Poetry从AWS S3仓库安装私有Python包?

解决Poetry无法从S3私有仓库安装依赖的问题

1. 修正源名称不匹配的问题

你添加的私有源名称是my-conda-repo,但在pyproject.toml中指定的源是INTERNAL,两者完全不对应,这是导致Poetry找不到包的直接原因之一。

修改pyproject.toml中的依赖配置:

[tool.poetry.dependencies]
my-utils = { version = "5.0.1", source = "my-conda-repo" }

2. 确保S3仓库符合PEP 503标准结构

Poetry遵循PyPI的PEP 503规范,要求私有仓库必须是simple风格的索引结构。你的S3桶内需要有如下层级:

my-conda-repo/
└── my-key/
    └── simple/
        └── my-utils/
            ├── index.html  # 包索引文件
            ├── my-utils-5.0.1-py3-none-any.whl
            └── my-utils-5.0.1.tar.gz

如果缺少simple/目录或对应的包索引,Poetry无法识别安装候选。

添加源时,路径指向包含simple/的父目录即可(Poetry会自动拼接/simple/路径):

poetry source add --secondary my-conda-repo s3://my-conda-repo/my-key

3. 验证AWS凭证与权限

确保~/.aws/credentials中的凭证拥有访问目标S3路径的权限:

  • 至少需要s3:GetObject权限,允许读取桶内的包文件和索引
  • 可以通过AWS CLI测试访问是否正常:
aws s3 ls s3://my-conda-repo/my-key/simple/my-utils/

如果命令返回包文件列表,说明凭证有效;否则需要检查凭证配置或IAM权限。

若默认AWS profile不是目标profile,添加源时可指定profile:

poetry source add --secondary my-conda-repo s3://my-conda-repo/my-key --profile your-aws-profile

4. 确保Poetry环境安装了boto3

Poetry依赖boto3库访问S3,需要确保当前环境(虚拟环境或Poetry全局环境)已安装:

# 在虚拟环境中安装
pip install boto3

5. 环境变量临时验证(可选)

如果怀疑凭证配置有问题,可通过环境变量直接指定凭证测试:

export AWS_ACCESS_KEY_ID="你的访问密钥ID"
export AWS_SECRET_ACCESS_KEY="你的私有访问密钥"
poetry install

若此方式成功,说明~/.aws/credentials的配置存在问题,需检查profile或凭证内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:05:22