python 包管理工具pdm使用介绍

1,050 阅读4分钟

PDM(Python Development Master)是现代的 Python 包管理工具,旨在提供更为现代化、可靠且灵活的解决方案。它是由我们国人开发,为了国际化文档采用了全英文编写。他称在自己34岁生日之际收到了一封邮件,内容是一位诺贝尔经济学得主邀请与其会面。

与传统的 pip 和 Poetry 相比,PDM 在依赖版本管理、项目隔离和性能优化等方面展现出独特的优势。

PDM提供了一些现代化的特性,包括:

• 依赖解析 – PDM使用了一种名为“依赖解析”的算法,它可以帮助用户分析项目依赖和版本的关系,并自动升级不兼容的依赖版本;

• 虚拟环境管理 – PDM支持创建和管理虚拟环境,以便在不同的项目中使用不同的Python版本和依赖;

• 本地缓存 – PDM会自动缓存已安装的包和依赖,以便在需要时快速安装;

• 集成测试 – PDM可以帮助用户进行持续集成和测试,以确保项目的稳定性和可靠性;

• PEP支持 – PDM支持最新的PEP标准,包括PEP517、PEP518和PEP621。这意味着它可以与其他PEP兼容的工具无缝集成。

安装

pip install pdm

查看配置项

pdm config

可以看到目前的源还是国外的源,如果需要换源可执行如下命令

pdm config pypi.url https://mirrors.aliyun.com/pypi/simple/ #阿里源,也可以换成其他国内源

查看pdm版本

pdm --version # 当前最新为version 2.17.2

初始化项目

pdm init

执行该命令会有一系列选项供选择,按实际填写就好。执行成功后项目里会包含pyproject.toml项目管理文件,src源代码目录,测试tests目录,README.md项目说明文件,还有.venv虚拟环境。

此时的pyproject.toml内容就是初始项目时填的信息。

[project]
name = "pdm_project_demo"
version = "0.1.0"
description = "pdm project demo"
authors = [
    {name = "zhou402*****48", email = "402******48@qq.com"},
]
dependencies = [
]
requires-python = ">=3.10"
readme = "README.md"
license = {text = "MIT"}

[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"

[tool.pdm]
distribution = true

添加依赖

pdm add fastapi

安装成功后pyproject.toml的dependencies 项会变成:

[project]
dependencies = [
    "fastapi>=0.111.1",
]

并且在项目里会自动增加pdm.lock文件锁定版本信息。

查看所有安装依赖

pdm list

查看特定包安装信息

pdm show fastapi

运行

pdm run python xxx.py

接下来在src/pdm_project_demo目录新建一个main.py,内容如下:

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def index():
    return {"msg": "Hello World!"}

@app.get("/items/{item_id}")
async def get_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

如果要配置pdm的执行该脚本,可在pyproject.toml新增如下配置:

[tool.pdm.scripts]
start = "bash start.sh"

start.sh 内容如下:

#! /bin/bash

cd src/pdm_project_demo
uvicorn main:app --reload

然后就可以执行如下命令将项目运行起来了。

pdm start

升级

如果你是老版本的pdm,可执行如下命令进行升级:

pdm self update

升级后老版本与新版本有差异,可执行pdm fix进行修复。

如果是某一个安装包进行更新,可执行如下命令:

pdm updte fastapi

打包

pdm build

执行完以后会在dist目录生成whl包和压缩文件。

发布

确保有pypi.org账号,执行如下命令:

pdm publish

这里遇到了一个坑,提示不再支持账号和密码的登录方式了,需要token认证登录了。

参考链接pypi.org/help/#apito…

再次执行npm publish后输入如下或者配置家目录的.pypirc,如上图所示,然后source一下。

username = __token__
password = <the token value, including the `pypi-` prefix>

然后就成功了,如下图所示。

帮助执行如下命令可以获取更多命令使用方式

pdm -h

到这里就暂时分享结束了,更多详细命令请参考官方文档。