13

我正在将一个小型 Python 项目打包为 zip 或 egg 文件,以便可以分发。我遇到了两种包含项目配置文件的方法,这两种方法似乎都产生了相同的结果。

方法一:

在 setup.py 中包含此代码:

from distutils.core import setup

setup(name='ProjectName', 
      version='1.0', 
      packages=['somePackage'],
      data_files = [('config', ['config\propFiles1.ini', 
                                'config\propFiles2.ini', 
                                'config\propFiles3.ini'])]
      )

方法二:

在 setup.py 中包含此代码:

from distutils.core import setup

setup(name='ProjectName', 
      version='1.0', 
      packages=['somePackage']
      )

然后,创建一个包含以下行的 MANIFEST.in 文件:

include config\* 

这些方法之间有什么区别吗?哪个是首选?我倾向于倾向于第一个,因为那时根本不需要 MANIFEST.in 文件。但是,在第一种方法中,您必须单独指定每个文件,而在第二种方法中,您可以只包含整个文件夹。还有什么我应该考虑的吗?标准做法是什么?

4

1 回答 1

29

MANIFEST.in 控制在您调用时将哪些文件放入分发 zip 文件中python setup.py sdist。它不控制安装的内容。 data_files(或更好package_data)控制安装了哪些文件(我认为还确保文件包含在 zip 文件中)。将 MANIFEST.in 用于您不会安装的文件,例如文档,以及package_data您使用的不是 Python 代码的文件(例如图像或模板)。

于 2010-06-03T19:24:01.923 回答