使用 Poetry 管理 Python 依赖

引言

在Python项目中管理依赖关系往往会变得繁琐,尤其是当项目复杂性增加时。Poetry是一款现代化的依赖管理和打包工具,它简化了这一过程,提供了一种高效的方式来创建、管理和分发Python项目。


使用案例

与传统的依赖管理工具如pipvenv相比,Poetry提供了几个优势:

1) 简化的依赖管理:与requirements.txt不同,Poetry使用pyproject.toml文件来更有效地处理依赖关系。

2) 自动虚拟环境:Poetry会自动为您的项目创建和管理虚拟环境。

3) 语义版本控制:它确保依赖关系遵循语义版本控制,从而减少兼容性问题。

4) 轻松发布:只需一个命令,您就可以将您的包发布到PyPI。

虽然有很多使用案例,但在本文中,我们将重点介绍如何使用Poetry设置项目并管理其依赖关系。


安装

最简单的方法是使用 pipx,因为它会在隔离的环境中安装包。

如果您没有安装 poetry,可以从 这里进行安装。

pipx install poetry

还有其他安装方法列在 这里

项目设置

有几种方法可以使用 poetry 设置你的项目。

官方 poetry 文档中,推荐使用poetry new <project-name>。这将创建一个以项目名称命名的文件夹,并生成一些模板文件,包括README.mdsrctestspyproject.toml

poetry new poetry-test

输出目录结构

然而,更加推荐使用 poetry init 来初始化项目中的 Poetry。这可以手动配置目录结构。

您可以在 GitHub 仓库 中找到本文使用的代码

1) 创建项目目录:

mkdir poetry-test && cd poetry-test

2) 初始化 Poetry:

这将运行一个交互式模块,您可以根据需要输入值。
运行后将只创建一个 pyproject.toml

poetry init
poetry init

3) 设置目录结构:

在本文中,我们将创建一个简单的 fastapi 端点,因此我将遵循 fastapi 应用程序的一般目录结构,并附上一个 README.md 文件。

dir structure

4) 安装依赖:

目前我们只有一个依赖 – “fastapi[standard]”。

poetry add "fastapi[standard]"

您也可以指定特定版本。运行此命令将更新 pyproject.toml 文件并创建一个 poetry.lock 文件。

5) Fastapi 端点代码:

将此代码添加到 app/main.py 文件中。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

现在要运行这个服务器,请执行

poetry run fastapi dev app/main.py

然后访问 http://localhost:8000/

就这样,服务器已启动。


 

Poetry 命令

现在让我们来看看我们使用的 Poetry 命令(以及一些其他命令),以了解它们的具体作用。

1) poetry init – 交互式初始化一个 Poetry 项目。

2) poetry add – 向环境中添加一个依赖。

3) poetry add –dev – 向环境中添加一个开发依赖。

4) poetry install – 如果你有一个 pyproject.toml 文件,可以运行此命令来安装依赖。

类似于 pip install -r requirements.txt

5) poetry run – 这允许我们在 poetry 环境中运行命令,而无需实际进入该环境。

6) poetry shell – 这允许您进入 poetry 环境。

类似于 sourcing 虚拟环境。

在较新的 poetry 版本中,shell 命令并不是内置的,而需要作为插件安装。
可以使用以下命令完成此操作 –

pipx inject poetry poetry-plugin-shell

7) poetry show – 列出已安装的依赖项。

类似于 pip freezepip list

8) poetry show –tree – 以树形结构列出已安装的依赖项(推荐使用)。

更多