划时代的 Python 包管理器 — PDM 局部&全局配置
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 只是被重置了而已。
而加了 –local 的话,说明操作局部配置,若局部配置里刚好有该配置,则将其删除,若没有该配置,则直接返回成功。
还有一点需要特别注意,pdm 中并非所有的配置都有全局和局部之分,就比如 use_global ,你加个 --local
会直接报 ValueError ,不允许将其设置为局部配置,因为没有意义~