使用 setup.cfg 在 python 包中包含一个数据文件夹

Including a data folder in a python package using setup.cfg

我有以下 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

来测试安装

但是,这并没有让我得到数据文件夹中的所有文件,而只是其中的一些,我不知道为什么。

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

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

可能是什么原因?

我发现了问题:您不应该使用 *.* 来包含所有文件,而应该使用 *。因为有时文件没有结尾,所以会被忽略。取决于文件 (MANIFEST.in):

recursive-include project_name/ru_core_news_sm-3.1.0 *

或(setup.cfg)

test_project_name/ru_core_news_sm-3.1.0 = *