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

标签 python setuptools

“Python 分发”指南(位于 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 (新的包含分发但现在称为 setuptools,而不是旧的 setuptools 已弃用分发工具,只是为了重新用于分发和分发重命名为 setuptools.....)

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

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

最佳答案

回复:“我需要 MANIFEST.in 吗?

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

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

Re:里面应该有什么?

程序很简单:

  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。

所有这些不同的包系统何时会...

比较今天和 2 年前的情况 - 情况要好得多 - setuptools 是要走的路。您可以忽略这一事实,distutils 有点损坏,并且是 setuptools 的低级基础,因为 setuptools 将负责向您隐藏这些东西.

编辑:最后几个项目我使用 pbr 来构建具有三行 setup.py 的分发包,其余在 setup .cfgrequirements.txt。无需关心 MANIFEST.in 和其他奇怪的东西。尽管该软件包应该得到更多的文档。见 http://docs.openstack.org/developer/pbr/

关于python - python 项目是否需要 MANIFEST.in,其中应该包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727709/

相关文章:

python - Flask Marshmallow 使用额外字段序列化多对多关系

python - 未从 python .egg 文件安装包数据

python - Twine 无法识别 --repository-url 标志

python setup.py develop 不更新 easy_install.pth

python - 有没有一种方法可以禁用定义 __getitem__ 方法的类的迭代而不对键施加约束?

Python:将变量发送到另一个脚本

python - 使用现有数据集作为基础数据集生成数据

python - 在 Cython 中使用 LAPACK 包装器估计行列式进行 LU 分解

python - 尝试在 Python 包中读取 JSON 文件

python - 默认情况下,setuptools 是否总是安装在 Python 中?