我正在将一个小型Python项目打包为zip或egg文件,以便分发它。我有两种方法可以包含项目的配置文件,这两种方法似乎都会产生相同的结果。
方法1:
在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'])]
)
方法2:
在setup.py中包含此代码:
from distutils.core import setup
setup(name='ProjectName',
version='1.0',
packages=['somePackage']
)
然后,使用此行创建一个MANIFEST.in文件:
include config\*
方法之间有什么区别吗?哪一个更受欢迎?我倾向于倾向于第一个,因为那时根本不需要MANIFEST.in文件。但是,在第一种方法中,您必须单独指定每个文件,而在第二种方法中,您可以只包括整个文件夹。还有什么我应该考虑的吗?什么是标准做法?
答案 0 :(得分:26)
MANIFEST.in控制在您调用python setup.py sdist
时将哪些文件放入分发zip文件中。它不控制安装的内容。 data_files
(或更好package_data
)控制安装的文件(我认为还确保文件包含在zip文件中)。对于您不会安装的文件(如文档),请使用MANIFEST.in;对于您使用的非Python代码的文件(如图像或模板),请使用package_data
。