做python项目需要一个MANIFEST.in,它应该是什么?
“Python Distribute”指南(位于python-distribute.org,但注册已失效)告诉我要包含doc/txt
文件,而.py
文件不包含在MANIFEST.in
文件中
源代码文档告诉我,只有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
,请创build它。 通常,如果您不使用README.txt
,docs
文件和testing套件的某些数据文件(如有必要),可以在其中添加tests*/*.py
文件,README.rst
。
例如:
include README.rst include COPYING.txt
为了testing它,运行python setup.py sdist
,并检查dist/
下创build的tarball。
什么时候将所有这些不同的包系统…
比较今天和两年前的情况 – 情况要好得多 – setuptools
是要走的路。 你可以忽略这个事实, distutils
有点破碎,并且是setuptools
低级基础,因为setuptools
会照顾你隐藏这些东西。
编辑 :最后几个项目我使用pbr
build立分配包与三行setup.py
和其余的setup.cfg
和requirements.txt
。 无需关心MANIFEST.in
和其他奇怪的东西。 即使这个软件包值得多一些文档。 见http://docs.openstack.org/developer/pbr/