Python Egg创建会忽略非.py文件

时间:2018-08-06 23:01:45

标签: python egg

我想从两个目录创建一个鸡蛋,并希望包含.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文件。

1 个答案:

答案 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之外。哪个有用...我忘了,也许与从源代码管理中提取版本文件有关?