用 5 条命令跑通 PDM 包管理器
【免费下载链接】pdmA modern Python package and dependency manager supporting the latest PEP standards项目地址: https://gitcode.com/GitHub_Trending/pd/pdm
在新机器上克隆同事的 Python 项目,pip install -r requirements.txt跑完后行为却和本地不一样——没有锁定版本,"大家装的一模一样"就只是口号。PDM 是一个遵循最新 PEP 标准的 Python 包管理器,把声明依赖、解析版本、装进隔离虚拟环境这几件事收进同一套命令里,并顺手生成锁文件,保证每台机器装出的版本真的一致。
下面只走一条线:装好 PDM → 建项目 → 加上第一个依赖 → 看懂锁文件。
先把 PDM 装进终端 📦
官方推荐用安装脚本装独立二进制,脚本会检查你机器上的 Python(需要 3.10 或更高):
curl -sSL https://pdm-project.org/install.sh | bash它做什么:下载官方脚本并执行,把pdm可执行文件装进 PATH。装完跑一下pdm --version确认版本输出。Windows 在 PowerShell 里执行 README 给出的irm ... | iex命令即可,见 README 的 Installation 一节。
后面所有操作都基于pdm这一个命令,不用关心它底层是 pip 还是虚拟环境。
从零建一个能跑的项目
pdm new按模板生成标准项目骨架,会问几个问题(包名、描述、Python 版本要求),然后生成pyproject.toml。这个文件是 PEP 621 标准的项目元数据,以后依赖声明、构建配置都写在它里面,一个文件管完:
pdm new my-project cd my-project已有项目则进到项目根目录跑pdm init,它会生成pyproject.toml并支持从 requirements.txt、Pipfile、Poetry 等格式导入依赖,见 新建项目指南。
然后加第一个依赖。pdm add一条命令干三件事:把requests写进pyproject.toml的依赖区、把它的全部子依赖解析出来写入新建的pdm.lock、再安装到项目虚拟环境(默认在项目根的.venv里):
pdm add requests想锁版本就写pdm add "requests>=2.25";开发用的依赖加-d,会单独归入 dev 组,pdm install默认把两组都装上。
看懂 pdm.lock:为什么它该进版本库
两个文件分工不同:
pyproject.toml记"你想要什么",比如 requests 的版本范围;pdm.lock记"解析结果",每个包的具体版本、文件哈希、下载来源。
区别类似购物清单和购物小票。同事拉下代码跑pdm install,PDM 严格按pdm.lock安装,环境才真正一致。应用类项目建议把pdm.lock提交进版本库;库项目可以不提交,让 CI 按最新版本解析。取舍讲得很清楚,见 锁文件文档。
配套的高频命令是查看当前装了谁:
pdm list --graph它打印已安装包的依赖树。想知道某个包是被谁拉进来的,先跑它。
换 Python 版本,不折腾系统环境
PDM 把项目用的解释器路径记在根目录的.pdm-python文件里,安装和运行都认它。切换就一条命令:
pdm use 3.11机器上没有这个版本时,可以直接让 PDM 装:pdm python install 3.11.4,用pdm python list查看它管理的解释器。项目默认环境放在.venv,需要并行多套环境时用pdm venv create建带名字的额外环境,细节见 虚拟环境文档。
这套机制解决一个老问题:两个项目要求不同 Python 版本时,传统 pip+venv 要手动建环境、手动激活,而 PDM 按当前目录自动切换解释器,进目录即用。
下一步去哪
- 依赖管理:add/remove/update 的完整语法,含 extras、git 依赖、本地路径依赖怎么写。
- 锁文件:每条命令分别会动 pyproject.toml、pdm.lock 还是已安装包,一张表格讲清楚。
- 虚拟环境:环境位置、复用已有 conda 环境、后端选择等进阶配置。
【免费下载链接】pdmA modern Python package and dependency manager supporting the latest PEP standards项目地址: https://gitcode.com/GitHub_Trending/pd/pdm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考