前言
想信很多同学都知道包管理工具,Node 的 npm、Java 的 maven、Python 的 pip。但是当我们有多个项目的时候,Python 通常会使用虚拟环境来隔离。但是之前的虚拟环境工具个人感觉都不好用,直到我发现了 PDM,用它来管理虚拟环境体验很好。特意推荐给大家。
关于 PDM
PDM 全名 Python Development Master。其基于文件夹,不需要单独创建 virtualenv。它的管理方式和 npm 挺像。
PDM 的特点
- 本地包安装程序和运行程序,不涉及
virtualenv。 - 简单且相对快速的依赖解析程序,主要用于大型二进制发行版。
- 后端构建。
- 项目元数据。
- 灵活而强大的插件系统。
- 选择集中安装缓存,如
npm。
安装 PDM
pip install pdm

呆猫
使用 PDM 初始化项目
使用 PDM 初始化项目很简单,我们只需要创建一个文件夹,然后进入文件夹中执行 pdm init 命令即可完成初始化。

初始化的时候,我们需要选择是否上传项目到 Pypi、开源协议、作者信息、Python 版本要求。
初始化完成后项目中会生成.pdm.toml、pyproject.toml 两个模板文件,而我们主要关注pyproject.toml。


给项目添加依赖包
和大多数的包管理工具一样,PDM 也是用 add 指令。
添加 requests 的过程:

添加完成后,和 npm 一样 PDM 也会在配置文件中写入安装的依赖包信息。

查看项目依赖包

对于已有的项目进行初始化
很多时候,我们会拉取别人的项目学习,对于这种项目进行依赖的安装该如何进行呢?npm 是直接使用 npm i 来做的。
为了模拟这种场景,我们手动向配置文件中增加一个 flask 的包依赖。

然后执行 pdm install 即可

不得不说,
PDM体验是真的不错。
项目管理命令
PDM 为我们提供了很多方法让我们来管理项目。

| 指令 | 作用 |
|---|---|
| pdm info | 查看项目信息 |
| pdm config install.cache on | 修改项目配置 |
| pdm export -o requirements.txt | 导出依赖 |
更多内容见:https://pdm.fming.dev/
PDM 快捷指令
和 npm run 一样,pdm 也支持类似功能。假设我们想要启动 flask 开发服务器,我们将 flask 应用移动到项目根路径,然后使用 pdm run flask run -p 5321 即可。

当然我们也可以在 pyproject.toml 配置 pdm script,这样就可以像 npm 一样去使用不同的指令起启动不同的服务器了。
我们就将上面的 flask 配置为 pdm script。

这样配置后,我们就可以使用 start 和 dev 分别在不同的端口启动 flask 服务了。
pdm run dev # 在8001启动dev服务器
pdm run start # 在8000启动生产服务器
总结
pdm 的功能远远不止上面我们介绍的,通过上面的介绍我个人认为 PDM 是目前 Python 包管理中比较易用,好用的一款。而且其学习了 npm 的优秀经验,真正做到了取精去槽。
希望我的分享能够让你对 Python 的包管理和虚拟环境有重新的认识。