如何使用hatch安装命名空间包?

问题描述 投票:0回答:1

在 sphinxcontrib 组织的上下文中,包应该全部位于 sphinxcontrib 命名空间包中,例如“sphinxcontrib.icon”或“sphinxcontrib.badge”。

该文件具有以下结构:

sphinxcontrib-icon/
├── sphinxcontrib/
│   └── icon/
│       └── __init__.py
└── pytproject.toml 

在基于 setuptools 的 pyproject.toml 文件中,我将执行以下操作:

# pyproject.toml

[build-system]
requires = ["setuptools>=61.2", "wheel", "pynpm>=0.2.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools]
include-package-data = false
packages = ["sphinxcontrib.icon"]

现在我想迁移到孵化,但我无法重现这种行为。在我的参数中我这样做:

# pyproject.toml

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["sphinxcontrib/skeleton"]

在“site-packages”文件夹中,我的库不在“sphincontrib/icon”中,正如我所期望的那样。

我应该如何调整我的代码才能使其正常工作?

我这里有一个例子:https://github.com/sphinx-contrib/sphinxcontrib-sculpture/tree/test 使用

nox -s docs
构建文档失败,因为该软件包尚未真正安装。

python packaging hatch
1个回答
0
投票

在这里复制孵化存储库维护者给出的答案:

packages 选项适用于代码位于 src/ 这样的目录下并且会折叠到最后一个路径组件的情况。因此,如果您的命名空间包位于这样的目录下,那么您可以将其设置为 src/sphinxcontrib 但因为这不是您的情况

所以我可以简单地做:

[tool.hatch.build.targets.wheel]
only-include = ["sphinxcontrib"]

请注意,您也可以使用常规的

include
选项,但这仍然需要递归其他目录,所以只是性能黑客。

© www.soinside.com 2019 - 2024. All rights reserved.