Python依赖和包管理工具Poetry
Poetry
是一个现代的Python包管理工具,它解决了很多传统工具如 pip
和 virtualenv
组合使用时遇到的问题,同时还集成了包的依赖管理和发布功能。
为什么使用 Poetry
- 依赖管理和版本控制:
Poetry
自动处理项目的依赖关系,并确保解决方案的一致性。它通过pyproject.toml
和poetry.lock
文件精确控制依赖版本,避免了依赖地狱。 - 简化虚拟环境管理:
Poetry
自动创建和管理虚拟环境,无需手动使用virtualenv
。这意味着每个项目都有自己独立的环境,从而避免了包版本冲突。 - 一体化工作流:从创建项目、添加依赖、安装依赖到打包和发布,
Poetry
提供了一套一致的命令接口,简化了工作流程。 - 便于项目协作:通过将
pyproject.toml
和poetry.lock
文件加入版本控制,团队成员可以确保在不同的开发环境中使用完全相同的依赖,从而减少“在我机器上能运行”这类问题。
安装 Poetry
首先,需要安装 Poetry
。官方推荐的安装方式是使用其安装脚本,以确保安装最新版本:
1 | curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python - |
或者,对于 Unix/Linux 系统,可以使用新的安装方式:
1 | curl -sSL https://install.python-poetry.org | python3 - |
Poetry 会被安装在系统中的如下位置:
$HOME/.local/bin
常见的 Poetry 用法
- 初始化新项目:
poetry new
或poetry init
- 添加依赖:
poetry add requests
,poetry add pytest --dev
(添加开发依赖) - 安装依赖:
poetry install
- 更新依赖:
poetry update
,poetry update requests
- 打包和发布:
poetry build
和poetry publish
(发布到PyPi) - 运行命令:
poetry run command
,poetry run python my_script.py
文件结构解析
Poetry
主要使用两个文件来管理项目的包信息和依赖:
**
pyproject.toml
**:这是一个TOML(Tom’s Obvious, Minimal Language)格式的文件,用于声明项目的元数据、依赖和配置。pyproject.toml
文件使得项目的构建系统变得更加标准化和一致。以下是一个简单的例子:1
2
3
4
5
6
7
8
9
10
11
12[tool.poetry]
name = "example-project"
version = "0.1.0"
description = "An example project"
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
[tool.poetry.dev-dependencies]
pytest = "^6.2.2"在这个文件中,你可以定义项目的名称、版本、描述、作者等信息,以及项目的依赖和开发依赖。
**
poetry.lock
**:这个文件被Poetry
自动生成,用于锁定项目依赖的具体版本,确保在不同环境中的一致性。它包含了直接依赖和间接依赖(即依赖的依赖)的详细信息,包括包的版本、来源等。poetry.lock
文件应该被加入到版本控制系统中,以确保所有环境中的依赖一致。
通过使用 Poetry
和这些文件,Python开发者可以更加高效、一致地管理项目的依赖和打包过程,从而提升开发效率和项目质量。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AGI Explained!
评论