<h2>回复:“我需要舱单吗?</h2>
<p>不,您不必使用<code>MANIFEST.in</code>。<code>distutils</code>和<code>setuptools</code>都包含在源代码中
分发包<code>setup.py</code>模块中提到的所有文件,包python文件,
<code>README.txt</code>和<code>test/test*.py</code>。如果这是您希望在分发包中拥有的所有内容,您可以
不必使用<code>MANIFEST.in</code>。</p>
<p>如果要操作(添加或删除)要包含的默认文件,则必须使用<code>MANIFEST.in</code>。</p>
<h2>回复:里面应该有什么?</h2>
<p>程序很简单:</p>
<ol>
<li><p>确保在您的<code>setup.py</code>中包含(通过<code>setup</code>参数)您认为对程序运行很重要的所有文件(模块、包、脚本…)</p></li>
<li><p>如果要添加或排除某些文件,请澄清。如果两者都不需要,则不需要使用<code>MANIFEST.in</code>。</p></li>
<li><p>如果需要<code>MANIFEST.in</code>,请创建它。通常,您会添加<code>tests*/*.py</code>文件,<code>README.rst</code>如果您不使用<code>README.txt</code>,<code>docs</code>文件,如果需要的话,可能还会添加一些测试套件的数据文件。</p></li>
</ol>
<p>例如:</p>
<pre><code>include README.rst
include COPYING.txt
</code></pre>
<p>要测试它,请运行<code>python setup.py sdist</code>,并检查在<code>dist/</code>下创建的tarball。</p>
<h2>什么时候这些不同的包装系统</h2>
<p>对比今天和两年前的情况——情况要好得多——<code>setuptools</code>才是前进的方向。你可以忽略这样一个事实,<code>distutils</code>有点坏,是<code>setuptools</code>的低级基础,因为<code>setuptools</code>应该把这些东西藏起来。</p>
<p><strong>EDIT<strong>:我使用的最后几个项目<code>pbr</code>用于构建带有三行<code>setup.py</code>的分发包,其余项目位于<code>setup.cfg</code>和<code>requirements.txt</code>中。不需要关心<code>MANIFEST.in</code>和其他奇怪的事情。即使这个包需要更多的文档。见<a href="http://docs.openstack.org/developer/pbr/">http://docs.openstack.org/developer/pbr/</a></p>