做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会照顾你隐藏这些东西。
编辑 :最后几个项目我使用pbrbuild立分配包与三行setup.py和其余的setup.cfg和requirements.txt 。 无需关心MANIFEST.in和其他奇怪的东西。 即使这个软件包值得多一些文档。 见http://docs.openstack.org/developer/pbr/