使用 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 = *
我有以下 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 = *