我想从两个目录创建一个鸡蛋,并希望包含.config
和.log
文件。目录的结构如下:
MSKDataDownloader
|_______configs
|________sensors.config
MSKSubscriber
|_______doc
|________dependencies.log
这是我的setup.py
文件:
from setuptools import setup, find_packages
setup(
name='MSKDataDownloader',
version='1.0.0',
description='Data Downloader',
packages=find_packages(),
include_package_data=True,
package_data={
'MSKDataDownloader': ['config/*.config'],
'MSKSubscriber': ['doc/*.log']
'MSKSubscriber': ['config/*.config']
}
)
我在做什么错?为什么鸡蛋中不包含.config
和.log
文件。
答案 0 :(得分:1)
问题在于include_package_data=True
并不意味着您认为的含义(或最理性的人会认为的含义)。简短的版本是,只需摆脱它即可。
来自the docs:
如果设置为
True
,这将告诉setuptools
自动将它找到的所有数据文件包括在MANIFEST.in
文件指定的包目录中。有关更多信息,请参见下面Including Data Files上的部分。
如果您点击链接,您会发现它实际上使setuptools
忽略了您在package_data
中明确告知的内容,而是查找了MANIFEST.in
中提到的每个文件,并且在目录树(或源代码控制树)中找到它:
如果使用特定于
setuptools
的{{1}}参数,除非由include_package_data
指定的文件在package_data
文件中列出,否则不会自动添加到清单中。 / p>
而且,由于您没有MANIFEST.in
,因此您一无所有。
因此,您想做两件事之一:
MANIFEST.in
。include_package_data=True
并删除MANIFEST.in
。由于package_data=…
天 1 遗留了许多示例,博客文章和教程,而这对于现代{{1} }。实际上,这里存在的过时和错误的帖子要多于正确的帖子。
显而易见的答案是仅使用pypa.org上PyPA的教程和示例…但是不幸的是,他们还没有得到涵盖您所需所有内容的书面教程。
因此,通常,您几乎必须阅读旧教程,然后在参考文档中查找他们告诉您的所有内容,以了解哪些部分是错误的。
1。 IIRC,在distribute
中,setuptools
将会使您的多余文件添加到sdist中,而不会添加到其他任何文件中。哪个听起来还是没用的,对吧?除了可以使您的鸡蛋和其他发行版依赖于构建sdist,然后运行脚本以编程方式生成distribute
之外。哪个有用...我忘了,也许与从源代码管理中提取版本文件有关?