python - 将文件包含在 Python 发行版中的 2 种技术 : which is better?

标签 python distribution distutils

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

方法一:

将此代码包含在 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 文件。但是,在第一种方法中,您必须单独指定每个文件,而在第二种方法中,您可以只包含整个文件夹。还有什么我应该考虑的吗?标准做法是什么?

最佳答案

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

关于python - 将文件包含在 Python 发行版中的 2 种技术 : which is better?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968701/

相关文章:

python - 在 Python 模块分发中查找文件

c# - 使用 Math.NET 计算临界值 T-Score

neural-network - 如何在多类分类任务中校准神经网络输出层的阈值?

python - 如何告诉 distutils 使用 gcc?

python - 查找交叉表引用时出现 KeyError

python - numpy.random.normal不同分布: selecting values from distribution

python setup.py 安装,virtualenv 中内存不足

python - 使用变量的 Pandas Sqlite 查询

python - Sympy - 比较带有等号 (=) 的等价表达式

python - SQLalchemy,原始查询和参数