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认证登录了。
再次执行npm publish后输入如下或者配置家目录的.pypirc,如上图所示,然后source一下。
username = __token__
password = <the token value, including the `pypi-` prefix>
然后就成功了,如下图所示。
帮助执行如下命令可以获取更多命令使用方式
pdm -h
到这里就暂时分享结束了,更多详细命令请参考官方文档。