在 pyproject.toml 中指定包数据

Lud*_*igH 35 python pip setuptools

我用setuptools。在 中setup.cfg,我可以定义

[options.package_data]
myModule =
    '*.csv'
Run Code Online (Sandbox Code Playgroud)

确保为我的用户安装数据。

我可以用它来达到同样的效果pyproject.toml吗?

Lud*_*igH 32

从 setuptools 版本 61.0.0 开始,提供了对此功能的测试版支持。请参阅文档https://setuptools.pypa.io/en/stable/userguide/datafiles.html

语法是

[tool.setuptools.package-data]
myModule = ["*.csv"]
Run Code Online (Sandbox Code Playgroud)

2024 年 1 月 12 日更新:这不再是测试版。一些不同的机制可以实现数据包含。一种机制是请求基于 git 的自动发现。设置 setuptools 版本并启用-scm插件就足够了。现在 git 跟踪的所有文件都将被视为数据文件。相关部分是...

[tool.setuptools.package-data]
myModule = ["*.csv"]
Run Code Online (Sandbox Code Playgroud)

我制作了一个完整的示例并发布在 github 上。https://github.com/el-hult/mypkg

阅读完整文档以获取更多选项。

  • 注意:如果您的项目是命名空间的,则语法为 `"path.to.myModule" = [...]` 即您需要在键周围加上引号 (4认同)

ciz*_*rio 7

如果我理解你的担忧,你正在使用setuptools作为构建和分发系统,并且你想将一些配置从setup.[py,cfg]即移动package_datapyproject.toml,如果是这样,你必须使用其他工具来构建和分发你的包,例如poetry@Romibuzi的答案中所述,因为它是除非 setuptools 团队计划一个新的主要版本来包含完全支持pyproject.toml,然后不需要额外/独立的配置setup.cfg文件,否则这是不可能的。

一些参考资料:

更新

根据v61.0.0,setuptools 对此功能提供了部分支持(仍处于测试版本)。

参考@LudvigH的回答。(谢谢你顺便说一句)