使用 pyproject.toml 和 setuptools 安装测试文件

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

我正在将一个旧的 python 项目迁移到新的

pyproject.toml
系统,但在获取安装测试所需的文件时遇到了问题。在
pyproject.toml
里面我有:

[tool.setuptools]
package-data = {"my_pkg_name" = ["tests/*.sdf", "tests/*.urdf", "tests/*.xml", "tests/meshes/*.obj"]}

[build-system]
requires = ["setuptools>=43.0.0", "wheel"]
build-backend = "setuptools.build_meta"

使用

pytest
运行的测试需要
package-data
中描述的文件。在我构建并安装构建后,测试文件不存在。如何安装这些文件? How to include package data with setuptools/distutils? 可能是相关的,但事情已经改变了,我宁愿不必创建清单文件。

项目结构如下所示:

.
├── LICENSE.txt
├── pyproject.toml
├── README.md
├── src
│   ├── my_pkg_name
│   │   ├── __init__.py
└── tests
    ├── ant.xml
    ├── humanoid.xml
    ├── __init__.py
    ├── kuka_iiwa.urdf
    ├── meshes
    │   ├── link_0.obj
    │   ├── link_1.obj
    │   ├── link_2.obj
    │   ├── link_3.obj
    │   ├── link_4.obj
    │   ├── link_5.obj
    │   ├── link_6.obj
    │   └── link_7.obj
    └── test_transform.py

pyproject.toml
没有具体的包发现相关设置。

python package setuptools pyproject.toml
1个回答
0
投票

对此进行更多研究,特别是:https://setuptools.pypa.io/en/stable/userguide/datafiles.html#non-package-data-files 我的问题是这些文件不是默认找到的包的一部分,它们只是

src
下的包。也不清楚是否应该安装测试文件——许多项目明确地将测试文件排除在安装之外。

要回答如何安装测试文件的原始问题, 解决方案是制作

tests
一个包(正如我上面已经拥有的),然后指定使用设置工具找到它,如下所示:

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

[tool.setuptools.package-data]
"*" = ["*.sdf", "*.urdf", "*.xml", "*.obj"]

我相信 package-data 需要 setuptools >= 61 你可以这样指定:

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"
© www.soinside.com 2019 - 2024. All rights reserved.