gpt4 book ai didi

setuptools - 使用 setup.cfg 在 python 包中包含数据文件夹

转载 作者:行者123 更新时间:2023-12-03 08:06:50 27 4
gpt4 key购买 nike

我有以下 setup.cfg 文件,这是一个我想要发布到 pypi 的常用项目,并且应该随数据文件夹一起提供,在我的例子中是 ru_core_news_sm-3.1.0。 (我正在使用安装工具):

[metadata]
name = test-project-name
version = 0.6.0

[options]
packages = find:
python_requires = >=3.6
include_package_data = True
install_requires =
spacy==3.1.3
beautifulsoup4

[options.package_data]
test_project_name/ru_core_news_sm-3.1.0 = *.*

这是我的目录结构

base_project_name/
├── test_project_name
│ ├── __init__.py
│ ├── a.py
│ └── ru_core_news_sm-3.1.0
├── pyproject.toml
├── MANIFEST.in
└── setup.cfg

我的 MANIFEST.in 中有这个:

recursive-include test_project_name/ru_core_news_sm-3.1.0 *.*

我正在通过执行pip install path/to/base_project_name来测试安装

但是,这并不能获取数据文件夹中的所有文件,而只能获取其中的一些文件,我不知道为什么。

这些是基本文件夹中的文件:

before

这就是我使用 pip 将其“测试安装”到其他位置时剩下的内容(两个项目都使用 venv):

after

可能是什么原因?

最佳答案

Setuptools 62.3.0开始,您现在可以使用递归通配符(“**”)来包含(子)目录递归地。这样您就可以包含整个文件夹以及其中的所有文件夹和文件。

例如,当使用 pyproject.toml 文件时,以下是递归包含两个文件夹的方式:

[tool.setuptools.package-data]
"ema_workbench.examples.data" = ["**"]
"ema_workbench.examples.models" = ["**"]

但您也可以仅在文件夹和所有子文件夹中包含某些文件类型。例如,如果您想包含所有 Markdown (.md) 文件:

[tool.setuptools.package-data]
"ema_workbench.examples.data" = ["**/*.md"]

使用 setup.pysetup.cfg 时它也应该有效。

参见https://github.com/pypa/setuptools/pull/3309了解详情。

关于setuptools - 使用 setup.cfg 在 python 包中包含数据文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72060314/

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