问题:python项目需要MANIFEST.in吗,应该在其中吗?
“ Python分发”指南(位于python-distribute.org,但注册已失败)告诉我包括doc/txt文件,并且.py文件中排除了MANIFEST.in文件
该sourcedist文档告诉我只有sdist用途MANIFEST.in,并只包括文件指定和包含.py文件。它还告诉我使用:python setup.py sdist --manifest-only生成一个MANIFEST,但是python告诉我这不存在
我很欣赏它们来自不同版本的python,并且分发系统完全混乱,但是假设我使用的是python 3,并且setuptools(新的包括distribution,但现在称为setuptools,而不是不赞成仅用于分发工具的旧setuptools重新分配到发行版,并将发行版重命名为setuptools …..)
我遵循的是“标准”文件夹结构和setup.py文件,
- 我需要一个
MANIFEST.in吗? - 应该是什么?
- 所有这些不同的包装系统和方法何时才能形成一个简单的过程?
回答 0
回复:“我需要一个MANIFEST.in吗?
不,您不必使用MANIFEST.in。两者,distutils并且setuptools被包括在源分发包中提到的所有文件setup.py-的模块,包Python文件,
README.txt和test/test*.py。如果这是分发包中所需的全部内容,则不必使用MANIFEST.in。
如果要操纵(添加或删除)要包括的默认文件,则必须使用MANIFEST.in。
回复:里面应该有什么?
程序很简单:
确保在您中
setup.py(包含setup参数)包含对程序运行至关重要的所有文件(模块,程序包,脚本…)澄清一下,是否有要添加的文件或要排除的文件。如果都不需要,则无需使用
MANIFEST.in。如果
MANIFEST.in需要,请创建它。通常情况下,你添加有tests*/*.py文件,README.rst如果你不使用README.txt,docs如果有必要的文件,可能还有一些数据文件的测试套件。
例如:
include README.rst
include COPYING.txt
要对其进行测试,请运行python setup.py sdist并检查在下创建的tarball dist/。
这些不同的包装系统何时会…
比较今天和2年前的情况-情况要好得多- setuptools是要走的路。您可以忽略一个事实,distutils它有点破损,并且是低级别的基础,setuptools因此setuptools请注意对您隐藏这些东西。
编辑:我使用的最后几个项目pbr用于构建分发包,其中三行setup.py,其余部分在setup.cfg和中requirements.txt。无需关心MANIFEST.in和其他奇怪的东西。即使该软件包值得更多文档。参见http://docs.openstack.org/developer/pbr/
回答 1
旧问题,新答案:
不,您不需要MANIFEST.in。但是,要setuptools执行您(通常)的意思,您确实需要使用setuptools_scm,它MANIFEST.in在2个关键位置扮演角色:
- 它确保在运行
sdist命令时打包所有相关文件(其中所有相关文件都定义为“源代码控制下的所有文件”) - 当
include_package_data用于将包数据包括为build或的一部分时bdist_wheel。(再次:在源代码控制下的文件)
历史上的理解MANIFEST.in是:当您没有源代码控制系统时,您需要其他机制来区分“源文件”和“碰巧在您的工作目录中的文件”。但是,您的项目处于源代码控制之下(正确吗?),因此不需要MANIFEST.in。本文中的更多信息。
