PDM项目配置管理完全指南
前言
PDM作为现代Python包和依赖管理工具,提供了灵活的配置系统来满足不同场景下的开发需求。本文将全面介绍PDM的配置管理功能,帮助开发者高效管理项目设置。
基础配置操作
PDM的配置系统采用类似Git的设计理念,通过pdm config
命令进行管理:
-
查看全部配置:
pdm config
-
查询单个配置项:
pdm config pypi.url
-
修改配置(默认全局生效):
pdm config pypi.url "https://test.pypi.org/simple"
-
项目级配置(添加
--local
参数):pdm config --local pypi.url "https://test.pypi.org/simple"
项目级配置会保存在项目根目录的pdm.toml
文件中,而全局配置则存储在用户目录下。
配置文件加载机制
PDM按照以下优先级顺序加载配置:
- 项目配置:
<项目根目录>/pdm.toml
- 用户配置:
<用户配置目录>/config.toml
- 系统配置:
<系统配置目录>/config.toml
各操作系统下的配置目录位置有所不同:
- Linux:遵循XDG规范,通常在
~/.config/pdm
- macOS:
~/Library/Application Support/pdm
- Windows:
%USERPROFILE%\AppData\Local\pdm\pdm
Python解释器管理
PDM支持从多种来源查找Python解释器:
# 仅使用Rye管理的解释器
pdm config python.providers rye
# 使用pyenv和asdf管理的解释器
pdm config python.providers pyenv,asdf
支持的来源包括:venv、PATH环境变量、pyenv、rye、asdf和Windows注册表等。
依赖解析配置
预发布版本处理
默认情况下,PDM会忽略预发布版本,除非没有稳定版本可用。可通过配置修改此行为:
[tool.pdm.resolution]
allow-prereleases = true
排除特定包
从2.12.0版本开始,可以完全排除某些包及其依赖:
[tool.pdm.resolution]
excludes = ["requests"]
包源管理
配置包索引
有两种方式配置包源:
-
通过pyproject.toml:
[[tool.pdm.source]] name = "private" url = "https://private.pypi.org/simple" verify_ssl = true
-
通过pdm config命令:
pdm config pypi.url "https://test.pypi.org/simple" pdm config pypi.extra.url "https://extra.pypi.org/simple"
包源优先级控制
默认情况下,PDM平等对待所有源。如需设置优先级:
[tool.pdm.resolution]
respect-source-order = true
包与源绑定
可以将特定包绑定到指定源:
[[tool.pdm.source]]
name = "private"
url = "https://private.pypi.org/simple"
include_packages = ["foo", "foo-*"]
exclude_packages = ["bar-*"]
认证信息管理
可通过环境变量注入认证信息:
[[tool.pdm.source]]
name = "private"
url = "https://${PRIVATE_PYPI_USERNAME}:${PRIVATE_PYPI_PASSWORD}@private.pypi.org/simple"
中央安装缓存
PDM支持跨项目共享包安装,节省磁盘空间:
# 启用缓存
pdm config install.cache on
# 查看缓存信息
pdm cache info
支持两种链接方式:
symlink
(默认):创建符号链接hardlink
:创建硬链接
发布配置
配置发布到PyPI或其他仓库的凭据:
# 配置PyPI发布信息
pdm config repository.pypi.username "__token__"
pdm config repository.pypi.password "my-pypi-token"
# 配置私有仓库
pdm config repository.company.url "https://pypi.company.org/legacy/"
密码管理
使用keyring
安装keyring后,PDM会将密码存储在系统密钥环中:
# 安装keyring支持
pdm self add keyring
Azure Artifacts支持
对于Azure Artifacts,需额外安装:
pdm self add keyring artifacts-keyring
其他实用配置
全局命令选项
从2.7.0版本开始,可以为命令预设选项:
[tool.pdm.options]
add = ["--no-isolation", "--no-self"]
install = ["--no-self"]
忽略包警告
从2.10.0版本开始,可以忽略特定包的版本警告:
[tool.pdm]
ignore_package_warnings = ["scipy", "tensorflow-*"]
总结
PDM提供了强大而灵活的配置系统,覆盖了从依赖解析到包发布的完整开发生命周期。通过合理利用这些配置选项,开发者可以构建出既符合团队规范又能满足个人偏好的Python开发环境。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考