pyproject.toml 中“[tool.setuptools.packages] find = {}”的功能

wst*_*uss 7 python setuptools pypi python-packaging

用于为包注册表打包 Python 项目的 GitLab 说明指示用户创建包含以下内容的 pyproject.toml 文件:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "mypypipackage"
version = "0.0.1"
authors = [
    { name="Example Author", email="author@example.com" },
]
description = "A small example package"
requires-python = ">=3.7"
classifiers = [
   "Programming Language :: Python :: 3",
   "Operating System :: OS Independent",
]

[tool.setuptools.packages]
find = {}
Run Code Online (Sandbox Code Playgroud)

find = {}谁能解释一下底部的功能是什么?GitLab 指南没有解释,我似乎找不到任何相关文档。

当然,.toml 文件按照指示工作得很好,但在不[tool.setuptools.packages]完全包含该部分的情况下它似乎也工作得很好。

Von*_*onC 5

这是一个setuptools自定义发现指令,使用此处的pyproject.toml 语法。

如果自动发现对您不起作用(例如,您想要在发行版中包含具有保留名称(例如tasksexample或 )的顶级包docs,或者想要排除否则会包含的嵌套包),则可以使用提供的包发现工具

[tool.setuptools.packages]
find = {}  # Scanning implicit namespaces is active by default
# OR
find = {namespaces = false}  # Disable implicit namespaces
Run Code Online (Sandbox Code Playgroud)

find:(find_packages()find = {}) 接受一个源目录和两个要排除和包含的包名称模式列表,然后返回一个str表示它可以找到的包的列表。

  • 这正是我一直在寻找的!谢谢。希望 pyproject.toml 文档更好,并指出在哪里可以找到这样的东西。 (2认同)