做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文件,

  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 ,请创build它。 通常,如果您不使用README.txtdocs文件和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.cfgrequirements.txt 。 无需关心MANIFEST.in和其他奇怪的东西。 即使这个软件包值得多一些文档。 见http://docs.openstack.org/developer/pbr/