对标pip,如何使用poetry管理python项目依赖与配置?
发布于 作者:苏南大叔 来源:程序如此灵动~

在Python
项目中,依赖管理是开发过程中非常重要的一环。Poetry
是一个现代化的Python
依赖管理工具,它通过 pyproject.toml
文件来管理项目配置,与传统的 pip
+requirements.txt
文件相比,提供了更强大的功能和更好的用户体验。本文中,苏南大叔根据实际项目,介绍Poetry
的核心文件及其使用方法,重点讨论如何配置镜像源以加速依赖安装。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10
,python@3.12.9
,pip@25.0.1
,poetry@2.1.2
。poetry
更像是个pip
+venv
(虚拟环境)的角色。或者说像node
的npm i -D
的一个角色。
poetry是什么
Poetry 是一个功能强大的依赖管理工具,用于管理 Python 项目的依赖性、构建和发布。它旨在替代旧的工具如 pip、virtualenv 和 setuptools,提供一个简单且全面的解决方案来处理 Python 项目的包管理。
安装 poetry
虽然某种意义上来说,poetry
是pip
的竞品。但是,安装poetry
最好最简单的方法依然是通过pip
进行安装。
pip install poetry
可以使用下面的命令,查看poetry
的版本号。
poetry --version
与 pip 的区别
功能 | Poetry | pip |
---|---|---|
配置文件 | pyproject.toml | requirements.txt |
依赖版本锁定 | poetry.lock | requirements.txt + pip freeze |
支持的功能 | 依赖管理、打包、发布 | 仅依赖安装 |
镜像源配置 | 支持全局和项目级镜像源 | 通过 pip.conf 或命令行参数 |
Poetry
提供了更现代化的依赖管理方式,尤其是在团队协作和可持续集成和部署的CI/CD
场景下,能够显著提升开发效率。
Poetry 核心文件
Poetry
使用以下几个文件来管理项目和依赖:
pyproject.toml
【非常重要,没有它,poetry
命令就拒绝执行】
这是 Poetry 的核心配置文件,包含项目的元信息(如名称、版本、作者等)以及依赖声明,非常重要的问题。
poetry.toml
这是Poetry
的用户配置文件,可以位于项目根目录下面。可以用于配置全局设置,例如镜像源、缓存路径等。
poetry.lock
该文件记录了项目依赖的具体版本及其哈希值,确保团队成员或CI/CD
(持续集成和交付)环境安装的依赖版本一致。当pyproject.toml
发生变化的时候,这个文件会监控的到。(和npm
的lock
文件是有较大区别的)
Poetry管理依赖项
以下是一些常用的 Poetry 管理依赖项目的命令:
初始化
- 初始化项目
使用poetry init
命令交互式创建pyproject.toml
文件。
- 新建项目
使用poetry new <folder>
命令交互式创建pyproject.toml
文件及其它项目文件。
添加和移除
添加依赖
使用poetry add <package>
添加依赖。例如添加requests
包:poetry add requests
- 移除依赖
使用poetry remove <package>
移除依赖。
安装和更新
- 安装依赖
使用poetry install
安装项目中声明的所有依赖。 - 更新依赖
使用poetry update
更新所有依赖到最新版本。
注意:只有poetry install
,后面没有任何参数。安装某个包的命令是poetry add <package>
。
配置文件
poetry.toml
是 Poetry 的用户配置文件,通常位于用户主目录下的 Poetry 配置目录中。具体路径如下:
- Linux/macOS:
~/.config/pypoetry/poetry.toml
- Windows:
%APPDATA%\pypoetry\poetry.toml
通常是:C:\Users\<用户名>\AppData\Roaming\pypoetry\config.toml
如果文件不存在,可以通过运行以下命令生成默认配置:
poetry config --list
也可以通过下面的命令修改配置,例如:
poetry config repositories.pypi https://pypi.tuna.tsinghua.edu.cn/simple
配置镜像【待展开】
在国内使用 Poetry 时,由于网络原因,可能会遇到依赖安装缓慢的问题,可以通过配置镜像源来解决这一问题。本文就简要说明了,后续单独展开讨论。
全局镜像源
编辑全局配置文件 poetry.toml
,添加如下内容:
[repositories]
pypi = { url = "https://pypi.tuna.tsinghua.edu.cn/simple" }
项目镜像源
也可以在 pyproject.toml
文件中为特定项目配置镜像源:
[[tool.poetry.source]]
name = "tsinghua"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
注意:这里是双[]
,具体上来说,可能是表示这是个可以多配置的项目吧。
运行脚本
使用poetry run python py.py
和直接 python py.py
,是有区别的。
poetry run
:确保脚本运行在项目的虚拟环境中,避免依赖冲突。- 直接运行:使用全局环境,可能不适合复杂项目。
poetry run python py.py
poetry run python script.py
运行环境:在 Poetry 管理的虚拟环境中运行脚本。
依赖管理:确保脚本运行时使用的是 pyproject.toml 中定义的依赖版本。
适用场景:当项目依赖特定的 Python 包版本或需要隔离环境时使用。
python py.py
python script.py
运行环境:直接使用系统全局的 Python 环境。
依赖管理:依赖的包可能来自全局环境,容易出现版本冲突或缺少依赖的问题。
适用场景:简单脚本或无需依赖隔离的情况。
总结
Poetry
是一个强大的Python
依赖管理工具,通过pyproject.toml
文件实现了统一的项目配置。它不仅简化了依赖管理,还提供了锁定依赖版本的功能,确保项目的可重复性。
在国内使用时,通过配置镜像源可以有效解决网络问题。相比传统的pip
工具,Poetry
更加现代化,是管理Python
项目的理想选择。
更多苏南大叔的python
文章,请点击:


