如何使用pip安装基于pyproject.toml构建的PDM命名空间包
问题解答
首先明确:基于pyproject.toml符合PEP 517/518规范的包,完全可以通过pip直接安装,你遇到的报错是配置和命令错误导致的,按以下步骤调整即可:
需修复的配置与命令问题
- 修正构建系统的依赖配置
你开启了use_scm自动生成版本号,但构建依赖中没有添加对应的scm工具依赖,修改pyproject.toml的build-system区块:
- 修正构建系统的依赖配置
[build-system] requires = ["pdm-pep517", "setuptools-scm"] build-backend = "pdm.pep517.api"
如果使用PDM原生的scm能力,将setuptools-scm替换为pdm-scm即可。
- 修正包包含路径配置
现有配置中tool.pdm.includes的值为["calc"],和你实际的包目录src/package-name完全不匹配,构建时不会将代码打包到发布包中,修改为对应路径:
- 修正包包含路径配置
[tool.pdm] package-dir = "src" includes = ["package-name"]
- 统一项目名与安装参数
你当前pyproject.toml中project.name值为project-name,和安装命令中#egg=package_name的参数、实际包目录名完全不匹配,首先修改project.name和实际对外发布的包名保持一致:
- 统一项目名与安装参数
[project] name = "package-name" # 需与安装命令的egg参数、包目录名完全匹配,中划线和下划线不能混用 version = { use_scm = true }
- 修正安装命令
原命令python3 pip install写法不规范,容易调用到非当前环境的pip,补充-m参数,同时可以添加--use-pep517强制走标准构建流程:
- 修正安装命令
python3 -m pip install git+ssh://link_to_package_on_github@main#egg=package-name --use-pep517
以上配置修改完成后推送到Git仓库,重新执行安装命令即可正常安装。
内容的提问来源于stack exchange,提问作者cygnusoid
相关产品推荐
相关产品推荐

