核心功能
用一份 pyproject.toml 声明项目依赖,由 Poetry 负责解析、安装和更新,并写出 poetry.lock 保证每个人和 CI 装到完全相同的版本。适合需要可复现依赖、又要把项目打包成 sdist / wheel 发布到包索引的 Python 应用与库开发者。
功能亮点
可复现的锁文件
poetry.lock 固定每个依赖的精确版本,团队、CI 与生产环境安装结果完全一致
丰富的版本约束语法
支持 caret、tilde、通配符、不等式以及多重约束等多种依赖声明写法
环境自动托管
自动为项目建虚拟环境,也会识别并沿用你在外部已激活的环境
打包发布一条龙
同一份配置既管依赖,也能 build 出分发包并 publish 到包索引
库与应用双模式
package-mode = false 时只管依赖不做打包,name、version 等元数据可省略
适用场景
• 为 Python 应用锁定依赖版本,让团队成员、CI 与生产机器装到完全相同的包
• 开发要发布到 PyPI 的 Python 库,用同一份配置完成构建与上传
• 只做依赖管理不打包的项目,开启 non-package 模式统一管理环境
安装配置
bash
pipx(官方首选方式,需先装好 pipx): pipx install poetry pipx 安装指定版本: pipx install poetry==1.8.4 pipx 升级 / 卸载: pipx upgrade poetry pipx uninstall poetry 官方安装脚本 —— Linux / macOS / Windows (WSL): curl -sSL https://install.python-poetry.org | python3 - 官方安装脚本 —— Windows (PowerShell): (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - 指定安装版本: curl -sSL https://install.python-poetry.org | python3 - --version 1.8.4 说明:Poetry 需要 Python 3.10 及以上版本。
使用方法
bash
poetry new poetry-demo # 新建项目(默认 src 布局) poetry init # 在已有目录交互式生成 pyproject.toml poetry add pendulum # 添加依赖,自动选定版本约束并安装 poetry remove pendulum # 移除依赖 poetry install # 按 pyproject.toml / poetry.lock 安装依赖 poetry install --no-root # 只装依赖,不安装项目本身 poetry update # 更新到符合约束的最新版本并刷新锁文件 poetry lock # 只锁定依赖,不执行安装 poetry run python your_script.py # 在项目环境中运行脚本 poetry run pytest # 在项目环境中运行命令行工具 eval "$(poetry env activate)" # 激活项目虚拟环境 poetry show # 列出所有可用包 poetry check # 校验 pyproject.toml 及其与锁文件的一致性 poetry build # 构建 sdist 与 wheel poetry publish # 发布到远程仓库 poetry version # 查看或递增项目版本号
关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标poetry
价格免费
开源是
上手难度进阶
相关工具
同类工具
优点
- poetry.lock 记录精确版本并可提交到版本库,团队与 CI 的依赖完全对齐
- 一份 pyproject.toml 同时承担依赖声明、虚拟环境、构建与发布四件事
- poetry add 会自动推算合适的版本约束并连同子依赖一起装好,不用手写版本号
- 会识别并尊重外部已激活的虚拟环境,可与 conda、pyenv 等既有流程共存
缺点
- 不会替你安装 Python 解释器,必须自备满足 requires-python 约束的解释器
- 安装 Poetry 本身要求 Python 3.10 及以上,老环境需要先升级
- 缺少 poetry.lock 时每次安装前都要重新解析,依赖多时锁定耗时明显