gpt4 book ai didi

Python - 在 setup.py 中递归包含包数据

转载 作者:太空狗 更新时间:2023-10-30 00:05:39 25 4
gpt4 key购买 nike

是否可以配置 setup.py 以便递归包含包数据?

例如,有没有这样的等价物:

setup(...,
packages=['mypkg'],
package_data={'mypkg': ['data/*.dat']},
)

这只是指定文件夹(可能有一些额外的选项)?

setup(...,
packages=['mypkg'],
package_data={'mypkg': ['data']},
)

示例取自:

https://docs.python.org/2/distutils/setupscript.html#installing-package-data

最佳答案

更新:

正如@AndriiZymohliad 在评论中指出的那样,setuptools 不支持递归 glob。您必须以编程方式解析文件。使用 pathlib 的示例:

from pathlib import Path

datadir = Path(__file__).parent / 'mypkg' / 'data'
files = [str(p.relative_to(datadir)) for p in datadir.rglob('*.dat')]

setup(
...,
packages=['mypkg'],
package_data={'mypkg': files},
)

原始答案,无法使用 ATM

使用 shell globs:

setup(
...,
packages=['mypkg'],
package_data={'mypkg': ['data/*.dat', 'data/**/*.dat']},
)

data/*.dat 将包括直接放在 data 中的所有 .dat 文件,但不包括在子目录中。 data/**/*.dat 将包含放置在 data 的任何子目录中的所有 .dat 文件(因此它将包含 data/spam/file.datdata/spam/eggs/other.dat 等),但它将包含任何 .dat 文件直接放在data中。因此,这两个 glob 是相互排斥的;这就是为什么如果您想在 data 下包含任何 .dat 文件,您总是需要提供这两个 glob。

关于Python - 在 setup.py 中递归包含包数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com