如何通过pyproject.toml将Jinja模板纳入Python包发行版
用pyproject.toml将Python包内的template目录纳入发行版
如果你不想依赖MANIFEST.in,仅通过pyproject.toml实现把mypack/template目录(含所有子文件、子目录)打包进发行版,可按以下两种方式配置:
方式一:配置package-data(通用写法)
若你的包使用setuptools作为构建后端,在pyproject.toml中添加以下配置:
[project] # 保留你原有的项目名称、版本等配置 [tool.setuptools.package-data] # 递归匹配mypack下template目录的所有层级文件和子目录 mypack = ["template/**/*"]
这里的**/*是递归通配符,会匹配template目录下所有子目录里的任意文件,不受后缀名限制。
方式二:启用include-package-data(更简洁)
也可直接开启自动包含包内数据文件的功能,同时明确指定要包含的目录:
[project] # 保留原有项目配置 [tool.setuptools.include-package-data] # 明确包含mypack.template目录 mypack.template = true
关键前提
确保你的pyproject.toml已指定正确的构建后端,示例配置如下:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"
注意:递归通配符**需要setuptools 61.0及以上版本支持,请保证依赖的setuptools版本达标。
验证方法
配置完成后,执行python -m build生成wheel或sdist包,解压后检查mypack/template目录及其所有内容是否被正确包含在内。
内容的提问来源于stack exchange,提问作者Sadra
相关产品推荐
相关产品推荐

