前言

在前文 使用 requirements.txt 管理你的python项目的依赖 中我们使用 requirements.txt 进行python项目的依赖管理。 本文我们使用 poetry,其官网地址 https://python-poetry.org/

poetry 不但可以管理依赖包,甚至可以进行应用打包等,这也是优于 requirements.txt 的地方。

安装

poetry的安装非常简单,与一般的python包安装没有区别:

pip3 install poetry

值得注意的是,若你曾经安装过 poetry 而又删除或升级了 python3 的版本,则 poetry 依赖的python解释器可能不正确。 这个时候你需要先删除 poetry,然后重新强制安装 poetry

# 先删除
pip3 uninstall poetry
# 强制安装
pip3 install poetry --force

确认安装

$: poetry --version
# 输出
Poetry (version 1.8.3)

创建工程

在使用 PyCharm 创建新的python项目的时候,【python解释器类型】选择 【自定义】,之后【环境】选择 【生成新的】,【类型】的下拉框内选择 【Poetry】即可。 生成的工程如下所示:

poetry-project-tree

比如我生成的更为细致的项目工程的截图如下: poetry-project

pyproject.toml

[tool.poetry]
name = "stocks"
version = "0.1.0"
description = ""
authors = ["yujinping <yujinping8620@qq.com>"]
readme = "README.md"
packages = [{include = "apis", from = "src"}]

[tool.poetry.dependencies]
# 此处相当于 requirements.txt 要求的依赖包
python = "^3.11"
fastapi = "^0.111.0"
uvicorn = "^0.30.1"
requests = "^2.32.3"
PyMySQL = "^1.1.1"
TA-Lib = "^0.4.30"
python-dotenv = "^1.0.1"
numpy = "^1.26.4"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

# 当你的poetry安装依赖包缓慢的时候增加如下配置,在Mac或Linux上Poetry并不会去 ~/.pip/config 去找全局的源,因此需要手动添加到项目配置里 
[[tool.poetry.source]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple/"

安装依赖

对于还没有产生 poetry.lock 文件的项目来说,

poetry install

你执行完上述命令后就会自动生成该文件。

若你手工修改了 pyproject.toml里的依赖项的话,那会要求你在执行 poetry install之前执行 poetry lock

之后添加依赖可以使用 poetry add ,比如添加 requests包,执行poetry add requests

若你想只是添加开发依赖,例如: pytest 那可以执行 poetry add pytest --dev 即可。

打包应用

可以使用

# 构建 wheel安装包和源码zip包
poetry build

# 只是构建 wheel 安装包
poetry build -f wheel

此时构建的程序包将会生成在 dist 文件夹下。