β

Python的Distutils模块与cx_Freeze对比

atolin 121 阅读

1.Distutils

Distutils包是标准Python库的一部分;主要特点有两个:
(1)是让用户觉得安装新模块、包和工具的过程是简单、一致又轻松的;
(2)是让开发者觉得创建这些新模块、包和工具的分发包是简单、一致又轻松的;

使用是需要写一个简单的setup.py脚本,其内容是一种相当固定的格式。可能看上去是这样的:

from distutils.core import setup, Extension

module1 = Extension(‘PyMesh’,
define_macros = [('PYMESH_EXPORTS', '1')],
libraries = ['MapSubdivision'],
library_dirs = [r'..\Test\Release'],
sources = ['PyMesh.cpp'])

setup(name=’PyMesh’,
version=’1.0.0′,
description = ‘This is a demo package’,
ext_modules=[module1],
)
真正的工作是由导入的distutils实现的,实际上是由setup()函数实现的;

distutils的魔力在于,创建模块分发包时,和安装模块分发包使用的是完全相同的setup.py文件。
一旦模块开发者创建了setup.py脚本,创建分发包所需要做的全部事情可能就是下面的几个步骤:
% python setup.py build
% python setup.py install
% python setup.py sdist
% python setup.py bdist_wininst

2.cx_Freeze

不是Python自带的标准库,区别在于cx_Freeze可将模块分发成可执行文件(window下的exe文件),
而distutils则不能分发成可执行程序。

作者:atolin
准完美主义软件社稷师
原文地址:Python的Distutils模块与cx_Freeze对比, 感谢原作者分享。

发表评论