python项目是否需要MANIFEST.in,其中应该包含什么?

“Python Distribute”指南(位于Python-Distribute.org,但该注册已过期)告诉我包括doc/txt文件,并且.py文件不包括在MANIFEST.in文件中

sourcedist文档告诉我,只有sdist使用清单.in,并且只包含您指定的文件和包含.py文件。它还告诉我使用:python setup.py sdist--manifest only来生成清单,但python告诉我这不存在

我很欣赏这些来自不同版本的python,并且分发系统处于一个
完全混乱,但假设我使用的是python 3和setuptools(新的一个包括distribute但现在称为setuptools,而不是旧的setuptools,它被弃用为distribute工具,只会被带回distribute并重命名为setuptools…)

我遵循“标准”文件夹结构和setup.py文件

  1. 我需要清单吗
  2. 里面应该有什么
  3. 什么时候所有这些不同的包装系统和方法都会变成一个简单的过程

回复:“我需要舱单吗

不,您不必使用清单。在中,distutilssetuptools都包含在源代码中
分发包setup.py-modules中提到的所有文件,包python文件,
README.txttest/test*.py。如果这是您希望在分发包中拥有的全部内容,您可以这样做
不必使用清单.in

如果要操作(添加或删除)要包含的默认文件,必须使用MANIFEST.in

Re:里面应该装什么

程序很简单:

  1. 确保在setup.py中包含(通过setup参数)您认为对程序运行很重要的所有文件(模块、包、脚本…)

  2. 澄清,如果有一些文件要添加或一些文件要排除。如果两者都不需要,则无需使用MANIFEST.in

  3. 如果需要MANIFEST.in,请创建它。通常,您会在那里添加tests*/*.py文件,README.rst如果您不使用README.txt文档文件,如果需要,还可能会添加一些测试套件的数据文件

例如:

包含自述文件.rst
包括COPYING.txt

要测试它,请运行python setup.py sdist,并检查在dist/下创建的tarball

什么时候所有这些不同的包装系统

比较今天和两年前的情况-情况要好得多-setuptools是一条出路。你可以忽略一个事实,distutils有点不完整,是setuptools的低级基础,因为setuptools会对你隐藏这些东西

编辑:最后几个项目我使用pbr来构建带有三行setup.py的分发包,其余部分在setup.cfgrequirements.txt中。不需要关心清单.in和其他奇怪的东西。即使包需要更多的文档n、 看http://docs.openstack.org/developer/pbr/

发表评论