programming 编程 Poetry Python 依赖管理 Poetry 是 Python 项目依赖管理和打包工具,用 pyproject.toml 管理所有配置,自动解析依赖冲突并生成锁文件,是除 uv 外最成熟的 Python 项目管理方案。
核心知识点 知识点 说明 工具定位 Python 依赖管理 + 项目打包 + 虚拟环境管理 最新版本 v1.8+ 核心优势 依赖解析准确、锁文件保证可重复、打包发布一体 配置文件 pyproject.toml(统一配置) 替代方案 uv(更快)、pip + requirements.txt(更简单)
安装配置 # 官方安装方式
curl -sSL https://install.python-poetry.org | python3 - # 安装
poetry --version # 验证
# 或用 pip
pip install poetry
# 或用 uv
uv tool install poetry
基本使用 # 创建项目
poetry new my-project # 创建新项目
cd my-project
# 或在已有目录初始化
poetry init # 交互式初始化
# 依赖管理
poetry add pandas numpy # 添加依赖
poetry add pytest --group dev # 添加到开发组
poetry remove pandas # 移除依赖
poetry update # 更新依赖
# 环境管理
poetry install # 安装所有依赖
poetry shell # 激活虚拟环境
poetry run python script.py # 在虚拟环境中运行
# 打包发布
poetry build # 构建包(wheel + sdist)
poetry publish # 发布到 PyPI
pyproject.toml 示例 [tool.poetry]
name = "metagenome-analysis"
version = "0.1.0"
description = "宏基因组分析工具"
authors = [ "Your Name <email@example.com>" ]
[tool.poetry.dependencies]
python = "^3.10"
pandas = "^2.0"
numpy = "^1.24"
scikit-learn = "^1.3"
[tool.poetry.group.dev.dependencies]
pytest = "^8.0"
ruff = "^0.4"
[build-system]
requires = [ "poetry-core" ]
build-backend = "poetry.core.masonry.api"
常见报错与解决 报错信息 原因 解决方法 SolverProblemError依赖冲突 放宽版本约束或检查冲突包 No module named未在 Poetry 环境中运行 用 poetry run 或 poetry shell 安装太慢 依赖解析耗时 考虑用 uv 替代
速查表 # ===== Poetry 速查表 =====
poetry new project # 创建项目
poetry add pandas # 添加依赖
poetry add pytest --group dev # 开发依赖
poetry remove pkg # 移除
poetry install # 安装
poetry update # 更新
poetry run python script.py # 运行
poetry shell # 进入环境
poetry build # 构建包
poetry publish # 发布
# Poetry vs uv
# Poetry: 成熟稳定,生态完善
# uv: 速度快 10-100 倍,功能追赶中
# 新项目推荐用 uv,老项目可继续用 Poetry