“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
文件,
- 我需要
MANIFEST.in
吗? - 里面应该有什么?
- 什么时候将所有这些不同的封装系统和方法整合到一个简单的过程中?
最佳答案
回复:“我需要 MANIFEST.in 吗?
不,您不必使用 MANIFEST.in
。 distutils
和 setuptools
都包含在源代码中
分发包setup.py
中提到的所有文件——模块,包python文件,
README.txt
和 test/test*.py
。如果这是您想要在分发包中拥有的所有内容,您可以
不必使用 MANIFEST.in
。
如果您想操作(添加或删除)要包含的默认文件,您必须使用 MANIFEST.in
。
Re:里面应该有什么?
程序很简单:
确保在您的
setup.py
中包含(通过setup
参数)您认为对程序运行很重要的所有文件(模块,包,脚本...)澄清,是否有一些文件要添加或一些文件要排除。如果两者都不需要,则无需使用
MANIFEST.in
。如果需要
MANIFEST.in
,请创建它。通常,你添加tests*/*.py
文件,README.rst
如果你不使用README.txt
,docs
文件,如有必要,可能还有一些用于测试套件的数据文件。
例如:
include README.rst
include COPYING.txt
要对其进行测试,请运行 python setup.py sdist
,并检查在 dist/
下创建的 tarball。
所有这些不同的包系统何时会...
比较今天和 2 年前的情况 - 情况要好得多 - setuptools
是要走的路。您可以忽略这一事实,distutils
有点损坏,并且是 setuptools
的低级基础,因为 setuptools
将负责向您隐藏这些东西.
编辑:最后几个项目我使用 pbr
来构建具有三行 setup.py
的分发包,其余在 setup .cfg
和 requirements.txt
。无需关心 MANIFEST.in
和其他奇怪的东西。尽管该软件包应该得到更多的文档。见 http://docs.openstack.org/developer/pbr/
关于python - python 项目是否需要 MANIFEST.in,其中应该包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727709/