You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nuitka构建wheel包时如何包含py.typed文件?

解决Nuitka构建Wheel时包含py.typed文件的问题

问题场景

我正在使用Nuitka作为build backend构建基于pyproject.toml的Python项目wheel包,需要将包内的py.typed文件纳入最终产物,但尝试include-package-data和include-data-files的多种组合后均未成功。

仓库结构:

pyproject.toml
my_package/
    __init__.py
    my_file.py
    py.typed

现有核心配置:

[build-system]
requires = ["setuptools>=42", "wheel", "nuitka", "toml"]
build-backend = "nuitka.distutils.Build"

[nuitka]
disable-ccache = true
include-package-data = "my_package=py.typed"

可行解决方案

方案1:用Nuitka的include-data-files明确映射文件

修改[nuitka]段的配置,通过include-data-files指定py.typed的源路径和目标路径,确保文件被复制到wheel包的对应目录:

[nuitka]
disable-ccache = true
include-data-files = "my_package/py.typed=my_package/"

该配置会将项目中my_package/py.typed文件复制到wheel包内的my_package/目录下,符合类型标记文件的放置要求。

方案2:结合setuptools标准package-data配置

如果方案1不生效,可以在pyproject.toml中添加setuptools标准的包数据配置,Nuitka的build backend会读取并应用这部分规则:

[project]
# 补充你的项目基础配置(如name、version等)
package-data = { "my_package": ["py.typed"] }

[build-system]
requires = ["setuptools>=42", "wheel", "nuitka", "toml"]
build-backend = "nuitka.distutils.Build"

[nuitka]
disable-ccache = true

这种方式遵循Python打包规范,同时兼容Nuitka的构建流程。

验证方法

构建完成后,可通过以下步骤确认py.typed是否被包含:

# 解压wheel包到临时目录
unzip your_package-*.whl -d temp_check
# 检查目标目录
ls temp_check/my_package/

若输出中包含py.typed,说明配置生效。

内容的提问来源于stack exchange,提问作者bphi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:42:40