Python-Poetry 项目中的仓库管理详解
poetry 简化Python包的打包与依赖关系管理工作而设计的一种解决方案或工具 项目地址: https://gitcode.com/gh_mirrors/po/poetry
前言
Python-Poetry 是一个现代化的 Python 依赖管理和打包工具,它提供了强大的仓库管理功能。本文将深入探讨 Poetry 中的仓库配置和使用方法,帮助开发者更好地管理项目依赖。
仓库类型概述
Poetry 支持多种类型的仓库,主要分为两大类:
- 包源仓库:用于获取项目依赖
- 发布仓库:用于发布项目包
包源仓库配置
默认配置
Poetry 默认使用 PyPI 作为包源仓库。当您添加依赖时,Poetry 会默认从 PyPI 查找这些包。
私有仓库配置
添加私有仓库源
要为项目添加私有仓库源,可以使用以下命令:
poetry source add foo https://pypi.example.org/simple/
这会在项目的 pyproject.toml
中添加如下配置:
[[tool.poetry.source]]
name = "foo"
url = "https://foo.bar/simple/"
priority = "primary"
认证配置
如果私有仓库需要认证,可以配置凭据:
poetry config http-basic.foo <用户名> <密码>
安全提示:某些系统可能会将密码保存在命令行历史中,建议在命令前添加空格以避免历史记录。
优先级分类
Poetry 1.5.0 引入了包源优先级概念:
- 主要源 (primary):默认类型,会禁用隐式 PyPI 源
- 补充源 (supplemental):仅当主要源找不到包时才会查询
- 显式源 (explicit):仅当依赖明确指定时才查询
主要源示例
poetry source add --priority=primary foo https://foo.bar/simple/
补充源示例
poetry source add --priority=supplemental foo https://foo.bar/simple/
显式源示例
poetry source add --priority=explicit pytorch-gpu-src https://download.pytorch.org/whl/cu118
包源约束
可以为特定包指定源:
poetry add --source foo private-package
这会在 pyproject.toml
中生成:
[tool.poetry.dependencies]
private-package = { version = "^1.0", source = "foo" }
支持的包源类型
1. PyPI (Python Package Index)
Poetry 通过 JSON API 与 PyPI 交互,获取包的版本、元数据等信息。
2. 简单 API 仓库
支持符合 PEP 503 标准的简单仓库:
poetry source add testpypi https://test.pypi.org/simple/
注意:URL 必须以 /simple/
结尾。
3. 单页链接源 (1.2.0+)
支持部分遵循 PEP 503 结构的单页链接:
poetry source add jax https://storage.googleapis.com/jax-releases/jax_releases.html
发布仓库配置
发布仓库是用户特定的配置,不同于项目特定的包源。Poetry 目前仅支持传统上传 API。
配置发布仓库
poetry config repositories.foo https://pypi.example.org/legacy/
发布项目
poetry publish --build --repository foo
认证管理
基本认证
poetry config http-basic.foo <用户名> <密码>
API 令牌
推荐使用 API 令牌而非密码:
poetry config pypi-token.pypi <我的令牌>
环境变量方式
export POETRY_HTTP_BASIC_FOO_USERNAME=<用户名>
export POETRY_HTTP_BASIC_FOO_PASSWORD=<密码>
密钥环支持
Poetry 支持使用系统密钥环存储凭据。如需禁用:
poetry config keyring.enabled false
最佳实践
- 为私有包明确指定源约束
- 使用 API 令牌而非密码
- 考虑使用补充源优化解析速度
- 对关键依赖使用显式源
总结
Python-Poetry 提供了灵活的仓库管理方案,支持多种仓库类型和优先级配置。通过合理使用这些功能,开发者可以高效地管理项目依赖,无论是公共包还是私有包。
记住,包源配置是 Poetry 特有的功能,在使用其他工具(如 pip)安装项目时不会被考虑。
poetry 简化Python包的打包与依赖关系管理工作而设计的一种解决方案或工具 项目地址: https://gitcode.com/gh_mirrors/po/poetry
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考