划时代的 Python 包管理器 — PDM 局部&全局配置

作者: 王炳明 分类: Python 工具使用 发布时间: 2022-03-20 22:34 热度:1,658

PDM 系列目录

1、划时代的 Python 包管理器:PDM 教程 — 入门篇
2、划时代的 Python 包管理器:PDM 教程 — 原理篇
3、划时代的 Python 包管理器 — PDM 局部&全局配置
4、划时代的 Python 包管理器 — PDM 局部&全局项目
5、划时代的 Python 包管理器 — PDM 缓存机制
6、读者问:如何让 PyCharm 支持 PDM ?


所有的 pdm 命令都可以使用 -p-g 选项来指定你要操作的是全局项目还是局部项目,若你没有指定 -p-g ,并且刚好处在局部项目目录之下,pdm 甚至会自动识别该项目,而优先操作局部项目。

而 pdm config 里的配置,优先逻辑却与上面相反。

当你不使用 -l/--local 时,pdm config 则优先操作全局的 pdm config ,因此如下三条命令是等价的

pdm config pypi.url http://pypi.douban.com/simple
pdm config -g pypi.url http://pypi.douban.com/simple
pdm config --global pypi.url http://pypi.douban.com/simple

只有当你明确指定 -l/--local 才会操作局部项目的 pdm config

pdm config -l pypi.url http://pypi.douban.com/simple
pdm config --local pypi.url http://pypi.douban.com/simple

全局配置与局部配置对应配置文件位置是:

  • 全局配置:~/.pdm/config.toml
  • 局部配置:/.pdm.toml

局部项目的配置文件名由 . 开头,因此是隐藏文件,需要你使用 ls -a 才可以看到。

需要千万注意的是,若你想修改其他项目的局部配置,不仅需要加 -p/--project 还要加 -l/--local 选项

pdm config -l -p <project_path> pypi.url http://pypi.douban.com/simple
pdm config --local --project <project_path> pypi.url http://pypi.douban.com/simple

pdm 会优先取局部配置,若局部配置里没有,才会去取全局的配置。

如果你配置完某个参数后,想删除的话,可以指定 -d/--delete 参数,但全局配置与局部配置的删除逻辑又不一样。

不加 –local 的话,说明操作全局配置,pdm 并不直接将配置删除,而是还原该全局配置为默认值,以 auto_global 为例,它的默认值为 False,现在我先将其改为 True,再将其删除,发现 auto_global 只是被重置了而已。

划时代的 Python 包管理器 — PDM 局部&全局配置

而加了 –local 的话,说明操作局部配置,若局部配置里刚好有该配置,则将其删除,若没有该配置,则直接返回成功。

还有一点需要特别注意,pdm 中并非所有的配置都有全局和局部之分,就比如 use_global ,你加个 --local 会直接报 ValueError ,不允许将其设置为局部配置,因为没有意义~

划时代的 Python 包管理器 — PDM 局部&全局配置

文章有帮助,请作者喝杯咖啡?

发表评论