PDM
1. 工具定位:颠覆虚拟环境的现代方案
Section titled “1. 工具定位:颠覆虚拟环境的现代方案”PDM 是一款现代的 Python 包和依赖管理器。它最大的特色是支持 PEP 582 提案,允许项目将依赖直接安装在项目根目录的 __pypackages__ 文件夹中,从而 彻底摆脱对独立虚拟环境 (Virtualenv) 的依赖。
(注:PDM 也完美向后兼容支持传统的 Virtualenv 模式)
2. 核心操作与生命周期管理
Section titled “2. 核心操作与生命周期管理”2.1. 安装与自动补全
Section titled “2.1. 安装与自动补全”curl -sSL https://pdm-project.org/install-pdm.py | python3 -# 开启 Bash 环境的命令自动补全pdm completion bash > /etc/bash_completion.d/pdm.bash-completion2.2. Python 解释器管理
Section titled “2.2. Python 解释器管理”PDM 内置了多版本 Python 探测与管理能力:
pdm python install --list # 查看所有可安装的远程 Python 版本pdm python install 3.9.12 # 直接安装指定版本pdm python list # 查看本机已安装探测到的解释器pdm python remove 3.9.122.3. 项目初始化与依赖管理
Section titled “2.3. 项目初始化与依赖管理”pdm init # 交互式初始化项目,生成 pyproject.toml
pdm add requests # 安装最新版本依赖pdm add requests==2.25.1 # 安装指定版本pdm update requests # 升级依赖pdm remove requests # 移除依赖pdm list # 展示当前依赖树3. 进阶:自定义任务执行 (pdm run)
Section titled “3. 进阶:自定义任务执行 (pdm run)”在 pyproject.toml 中,可通过 [tool.pdm.scripts] 定义复杂的命令行快捷方式,类似于 package.json 中的 scripts。
[tool.pdm.scripts]# 1. 数组定义法 (安全传参)start = {cmd = ["flask", "run", "-p", "54321"]}# 2. Shell 执行法 (支持管道符)filter_error = {shell = "cat error.log | grep CRITICAL > critical.log"}# 3. 函数调用法 (直接触发 Python 函数)foobar = {call = "foo_package.bar_module:main"}# 4. 组合任务 (串行执行多个子任务)all = {composite = ["lint", "test"]}执行上述脚本:
pdm run start# 若未定义快捷脚本,也可以直接通过 pdm run 触发任何环境内的包命令pdm run flask run -p 543214. 附录:配置国内镜像加速
Section titled “4. 附录:配置国内镜像加速”加速依赖下载速度(全局生效):
pdm config pypi.url https://pypi.tuna.tsinghua.edu.cn/simple