以下是正文
所有的 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 pypi.url http://pypi.douban.com/simple
pdm config --local --project pypi.url http://pypi.douban.com/simple
pdm 会优先取局部配置,若局部配置里没有,才会去取全局的配置。
如果你配置完某个参数后,想删除的话,可以指定 -d/--delete 参数,但全局配置与局部配置的删除逻辑又不一样。
不加 --local 的话,说明操作全局配置,pdm 并不直接将配置删除,而是还原该全局配置为默认值,以 auto_global 为例,它的默认值为 False,现在我先将其改为 True,再将其删除,发现 auto_global 只是被重置了而已。

而加了 --local 的话,说明操作局部配置,若局部配置里刚好有该配置,则将其删除,若没有该配置,则直接返回成功。
还有一点需要特别注意,pdm 中并非所有的配置都有全局和局部之分,就比如 use_global ,你加个 --local 会直接报 ValueError ,不允许将其设置为局部配置,因为没有意义~

到目前 pdm 已经输出四篇文章了,下一篇终于可以讲讲 pdm 的缓存机制,是个非常重要且核心的知识点,后天见

点击下方卡片,关注明哥