很多人还在用 pip + 手动建 venv,装个包要查文档、配路径、删缓存,一不小心就版本冲突。
或者干脆买了 PyCharm 专业版——就为它内置的依赖管理界面和环境隔离功能。
其实这些事,一个叫 PDM 的开源工具就能干,而且不收一分钱。
替代了哪些付费软件
它不直接对标某款收费软件,但实实在在替代了三类付费需求:
“你不是在买工具,是在为 Python 环境的混乱买单。”
第一类是 IDE 专业版里的依赖管理模块。比如 PyCharm 专业版年费 139 美元,其中很大一块价值就是帮你自动处理 pyproject.toml、锁版本、切环境。
第二类是团队里自建的 Python 构建流水线服务——PDM 支持 PEP 621 标准元数据,能直接生成 wheel 包,省掉定制脚本或 Jenkins 插件的钱。
第三类是那些按月订阅的 Python 开发协作平台,它们靠统一环境配置、共享依赖缓存赚钱。而 PDM 本身就有 集中式安装缓存,像 pnpm 那样节省磁盘空间。
价格直接砍到零。
主要能干这几件事
- 新建项目不用手写配置文件。运行 pdm new my-project,它会引导你填作者、描述、Python 版本,自动生成标准 pyproject.toml,连测试命令和打包配置都预设好了。默认启用 PEP 621 元数据格式,字段包括
[project]下的name、version、dependencies,以及[build-system]指向 PDM 自带的 PEP 517 后端。 - 装包快且省空间。它默认启用全局缓存,同一份二进制包(比如 numpy 或 pandas)在多项目间复用,不用反复下载解压。对大包特别友好,官方说这是专为“大型二进制分发”优化的。缓存位置在
~/.cache/pdm(Linux/macOS)或%LOCALAPPDATA%\pdm\Cache(Windows),可手动清理。 - 锁版本比 Poetry 更透明。每次 pdm add 后会生成 pdm.lock,里面明明白白写着每个包的来源、哈希值、依赖树,没有黑盒解析过程。锁文件采用 TOML 格式,包含
[[package]]块,每项含name、version、files列表和requires_dist数组,可直接人工校验。 - 不用再单独装 Python 解释器。它集成了 astral-sh/python-build-standalone,想试 3.11 还是 3.12?一条命令就能拉下来,不污染系统 Python。执行 pdm python install 3.12 即可下载并注册,之后可用 pdm use 3.12 切换项目解释器版本。
- 插件机制灵活,但不用学新语法。所有扩展都以标准 Python 包形式发布,pip install 就能用。README 里明确写了“用户可自由选择构建后端”,不像 Poetry 那样绑定自己的打包逻辑。例如可替换为
setuptools.build_meta或flit_core.buildapi,只需修改pyproject.toml中的build-backend字段。 - 支持 Windows 和 Linux,不需要 Docker。安装脚本一行搞定,连 PowerShell 都适配好了;也不用先装 Python , 它自带独立二进制,3.10+ 环境直接跑。Windows 用户执行后,可执行文件默认放在
%USERPROFILE%\AppData\Local\PDM\bin,自动加入 PATH。
上手只要三步
- 去 GitHub Release 页面 下载最新版 standalone 二进制,或者用命令行一键装:Windows 用户复制粘贴这行:powershell -ExecutionPolicy ByPass -c “irm https://pdm-project.org/install.ps1 | iex”。执行后会在用户目录创建
pdm可执行文件,并提示是否添加到系统 PATH。 - 装完打开终端,输入 pdm new hello-world,按提示填两三个问题,项目骨架就建好了,包含 pyproject.toml 和 .pdm-python 文件。后者记录当前项目绑定的 Python 解释器路径,避免跨机器迁移时环境错乱。
- 进项目目录,执行 pdm add requests,它会自动创建虚拟环境、安装包、写进依赖列表,还能立刻用 pdm run python -m requests.help 测试是否生效。这个
pdm run命令会确保调用的是项目专属环境中的 Python,无需手动激活 venv。
项目信息
pdm-project/pdm
GitHub
A modern Python package and dependency manager supporting the latest PEP standards
8.7k
Stars
505
Forks
Python
MIT



