如何使用setup.cfg将数据放入Python包中



我正在尝试创建一个带有数据文件的包,但它不工作。

我的setup.cfg(每个链接)在下面

[metadata]
name = my_package
version = 1.0.0
description = My package description
author = John Henckel
author_email = henckel.jonathan@mayo.edu
url = http://example.com
keywords = one, two
license = BSD 3-Clause License
classifiers =
Framework :: Django
License :: OSI Approved :: BSD License
Programming Language :: Python :: 3
Programming Language :: Python :: 3.5
[options]
include_package_data = True
packages = find:
[options.package_data]
* = *.txt

和我的项目的目录结构是…

LICENSE
pyproject.toml
README.md
setup.cfg
my_package
hello.txt
__init__.py

我输入了…

python -m build --sdist
tar -vtf dist/my_package-1.0.0.tar.gz

和输出,如您所见没有包含hello.txt。为什么不呢! ? ?

drwxrwxrwx  0 0      0           0 Oct 22 17:28 my_package-1.0.0/
-rw-rw-rw-  0 0      0          48 Oct 22 17:24 my_package-1.0.0/LICENSE
-rw-rw-rw-  0 0      0         474 Oct 22 17:28 my_package-1.0.0/PKG-INFO
-rw-rw-rw-  0 0      0          29 Oct 22 17:24 my_package-1.0.0/README.md
drwxrwxrwx  0 0      0           0 Oct 22 17:28 my_package-1.0.0/my_package/
-rw-rw-rw-  0 0      0           0 Oct 22 17:24 my_package-1.0.0/my_package/__init__.py
drwxrwxrwx  0 0      0           0 Oct 22 17:28 my_package-1.0.0/my_package.egg-info/
-rw-rw-rw-  0 0      0         474 Oct 22 17:28 my_package-1.0.0/my_package.egg-info/PKG-INFO
-rw-rw-rw-  0 0      0         201 Oct 22 17:28 my_package-1.0.0/my_package.egg-info/SOURCES.txt
-rw-rw-rw-  0 0      0           1 Oct 22 17:28 my_package-1.0.0/my_package.egg-info/dependency_links.txt
-rw-rw-rw-  0 0      0          11 Oct 22 17:28 my_package-1.0.0/my_package.egg-info/top_level.txt
-rw-rw-rw-  0 0      0         108 Oct 01 13:52 my_package-1.0.0/pyproject.toml
-rw-rw-rw-  0 0      0         528 Oct 22 17:28 my_package-1.0.0/setup.cfg

我怀疑这可能取决于您安装的setuptools的版本。当我使用相同的setup.cfg构建您的软件包的测试版本时,我的源代码发行版包含hello.txt。但是,您可能还想尝试从setup.cfg中删除include_package_data = True选项。最新的setuptools用户指南如下:

总之,这三个选项允许您:
  • include_package_data接受MANIFEST.in.
  • 匹配的所有数据文件和目录
  • package_data指定额外的模式来匹配可能或可能不被MANIFEST匹配的文件。
  • exclude_package_data指定在安装包时不应该包含的数据文件和目录的模式,即使由于使用了前面的选项而将它们包含在内。">

对于某些版本的setuptools,include_package_data选项可能会覆盖package_data列表,因此您必须提供MANIFEST.in文件。

编辑:我忽略了setuptools用户指南中的这句话,这似乎证实了我上面写的:

"如果使用setuptools特定的include_package_data参数,由package_data指定的文件将不会自动添加到manifest中,除非它们在manifest中列出。在文件!">

相关内容

  • 没有找到相关文章

最新更新