使用 pyproject.toml 中的 setuptools 添加 py.typed 作为包数据

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

根据我的阅读,为了确保代码的类型信息与代码一起分发以供 linter 读取,

py.typed
文件应该是您的分发的一部分。

我找到了如何将这些添加到 setup.py 的答案,但我不清楚 1. 是否应将其包含在 pyproject.toml 中(使用 setuptools),2. 如果是,应如何添加。

搜索他们的 github 存储库,似乎这不会自动添加,所以问题仍然是我应该如何将它添加到我的 pyproject.toml 中。我发现了关于

package_data
的一般性讨论,但它包括对
include_package_data
MANIFEST.in
的引用,从那里开始,什么应该去哪里变得令人困惑。

Tl;dr:使用 setuptools 时,我应该如何在 pyproject.toml 中包含

py.typed

python setuptools pyproject.toml typed
2个回答
10
投票

是的,您应该将

py.typed
添加到包的源文件夹(与
__init__.py
同一级别)。这会通知类型检查器(如
mypy
)您的包支持输入。请参阅PEP 561

这是

pyproject.toml
中所需内容的示例。将
pkgname
替换为您的包裹名称。

[tool.setuptools.package-data]
"pkgname" = ["py.typed"]

值得注意的是包发现使用:

[tool.setuptools.packages.find]
where = ["src"]

似乎是必需的,可惜

package-data
不会有任何效果,如
setuptools
文档中所述:https://setuptools.pypa.io/en/latest/userguide/datafiles.html#package-data


0
投票

一旦包含超过 1 个目录,上述建议的解决方案就不再适合我。 例如

[tool.setuptools.packages.find]
where = ["src", "docs"]

有什么想法吗?我用

setuptools==65.5.0
mypy==1.9.0

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