python项目需要MANIFEST.in吗?它应该包含什么?

2024-05-08 16:42:45 发布

您现在位置:Python中文网/ 问答频道 /正文

“Python Distribute”指南(位于Python-Distribute.org,但注册已经失效)告诉我要包含doc/txt文件,并且.py文件被排除在MANIFEST.in文件中

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

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

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

  1. 我需要一个MANIFEST.in吗?
  2. 里面应该有什么?
  3. 什么时候所有这些不同的包装系统和方法将被制成一个单一的简单过程?

Tags: 文件工具inpyorgtxtdoc系统
2条回答

回复:“我需要舱单吗?

不,您不必使用MANIFEST.indistutilssetuptools都包含在源代码中 分发包setup.py模块中提到的所有文件,包python文件, README.txttest/test*.py。如果这是您希望在分发包中拥有的所有内容,您可以 不必使用MANIFEST.in

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

回复:里面应该有什么?

程序很简单:

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

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

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

例如:

include README.rst
include COPYING.txt

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

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

对比今天和两年前的情况——情况要好得多——setuptools才是前进的方向。你可以忽略这样一个事实,distutils有点坏,是setuptools的低级基础,因为setuptools应该把这些东西藏起来。

EDIT:我使用的最后几个项目pbr用于构建带有三行setup.py的分发包,其余项目位于setup.cfgrequirements.txt中。不需要关心MANIFEST.in和其他奇怪的事情。即使这个包需要更多的文档。见http://docs.openstack.org/developer/pbr/

旧问题,新答案:

不,你不需要MANIFEST.in。然而,要想让setuptools达到您(通常)的意思,您确实需要使用setuptools_scm,它在两个关键位置扮演MANIFEST.in的角色:

  • 它确保在运行sdist命令时打包所有相关文件(其中所有相关文件都定义为“受源代码管理的所有文件”)
  • 当使用include_package_data将包数据包含在buildbdist_wheel中时。(同样:受源代码管理的文件)

MANIFEST.in的历史理解是:当您没有源代码管理系统时,您需要一些其他机制来区分“源文件”和“恰好位于工作目录中的文件”。但是,您的项目受源代码管理(对吗?)所以不需要MANIFEST.inMore info in this article

相关问题 更多 >