在 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
构建文档失败,因为该软件包尚未真正安装。
在这里复制孵化存储库维护者给出的答案:
packages 选项适用于代码位于 src/ 这样的目录下并且会折叠到最后一个路径组件的情况。因此,如果您的命名空间包位于这样的目录下,那么您可以将其设置为 src/sphinxcontrib 但因为这不是您的情况
所以我可以简单地做:
[tool.hatch.build.targets.wheel]
only-include = ["sphinxcontrib"]
请注意,您也可以使用常规的
include
选项,但这仍然需要递归其他目录,所以只是性能黑客。