• Hello World
  • admin

PDM是什么

PDM是由国人开发的适合国内网络的Poety的替代品,是一款包管理器.

为什么要用PDM

喵假定您是一位什么都不懂的小白,从最开始和您说明白为什么要用 PDM

依赖管理上的问题

首先是包管理器,应该您知道 Python 安装就会自带的 pip
通过 pip install 咱们可以方便的安装依赖
但是如果咱们要分发写好的源码,就需要把项目依赖的包写到名为requirements.txt的文件里
这个文件说实话,喵到现在都不记得怎么拼,而且ide基本也不提供自动的方法.
而且使用起来也非常繁琐.

依赖冲突上的问题

另外还有一个问题就是依赖冲突,
假设有两个项目同时一个包的不同版本,那可就完犊子了
不过您使用的是 pycharm 这样的现代IDE 的话,项目一般会自带 venv 来解决
有关 venv 是如何解决依赖冲突可以看看喵的另一篇文章

编译上的问题

除此之外还有包编译,假设您写完了一个包想编译并上传到 pypi
也可以不传,主要说编译上的问题
原来的编译方案是写一个setup.py
然后使用编译工具setuptools来解析它
这里就出现一个致命问题,假设项目依赖一个特定版本的setuptools,
而你现在已经装了最新版本的setuptools
毕竟没有setuptools就没法解析setup.py,解析完后又发现当前版本不能编译项目
这就成了鸡和蛋的问题
另一个问题在于setup.py也必须由您来手写,天啦,这也太痛苦了

PDM是怎么解决以上问题的

我们必须找到一个方案,即解放双手不用编写那么多奇奇怪怪的文档,也不会出现setuptoolsde鸡和蛋问题

于是Poety就出来了,它达成以下几个目的
1.自动生成虚拟环境以解决依赖冲突
2.记录您添加的包以免重复编写requirements.txt
3.通过向导简单的生成编译信息,从此远离setup.py
4.由它来解析需要的编译器版本来防止鸡和蛋问题
由于Poety有着各种各样不适合国情的原因,
于是Poety的国人参与者创建了一个分支,
就是本文所讲的PDM

如何使用 PDM

如果是vscode

使用pdm init可以创建一个虚拟环境,不过喵没用过,您可以自行摸索
pdm的虚拟环境好处在于项目文件夹可以随意挪动不受限制,而venv只要换目录就需要重建

如果是pycharm

在终端直接用pip install pdm安装,然后pdm init即可,创建过程中会自动识别虚拟环境

其他

使用pdm add代替pip install来添加依赖
使用pdm build代替build来编译
项目中会生成pyproject.toml,这个文件由pdm自动管理,您也可以手动修改

评论已关闭