Distutils介绍

来源:互联网 发布:水稻基因组数据库 编辑:程序博客网 时间:2024/05/21 13:23

Distutils介绍

这篇文章包含了用Python Distutils发布python模块的各个方面,主要是针对Python的开发人员。如果你想要知道怎么安装python模块,应该参考安装Python模块的章节。

1.1 专业术语

用Distutils是非常简单的,不仅对Python开发者来说,对想安装Python第三方模块的用户来说也很简单。作为一个开发人员,你的职责包括:

  • 写个安装的脚本(通常命名为setup.py)
  • 写个安装的配置文件(可选)
  • 创建一个包含源文件的包
  • 创建一个或多个编译好的包(可选)
这些任务在这篇文章中都会包括。
不是所有的开发人员都会用多种平台。所以期望他们创建适合与多平台的发布版本是不实际的。创建一种中间的媒介来达到所有的平台都可以用的目的是可行的。这种中间包包含着源代码。这样在不同平台 上的用户,就可以用比较简单的方式来安装这些模块。

1.2一个简单的例子


安装脚本通常很简单,虽然它是由python语言写的。但是没有限制你来用它做什么。和自动配置形式的脚本不同,这个安装脚本在编译和安装模型的过程中会执行很多次。
如果你想发布一个叫“foo”的模块,他包含一个"foo.py"的文件,那么你的setup.py文件可以简单的写为
from distutils.core import setupsetup(name='foo',          version='1.0',          py_modules=['foo'],)
一些需要注意的地方:
  • 你提供给Distutils的大部分信息都是作为setup()函数的关键字参数传递的
  • 这些参数主要分为两类:包的元数据(名字,版本号)和在包里面包含文件的信息(Python模块的列表)
  • 模型是通过模型名字来进行标记的,而不是文件名
  • 通常来说提供多点的包信息会好一些,包括:作者的名字,email地址,这个项目的URL地址等。
创建一个包含源代码的模型,你应该创建一个setup.py的文件,然后运行下列命令
python setup.py sdist
sdist命令会创建一个包含setup.py和foo.py的压缩文件(Unix的tar,windows的zip)。这个压缩文件会被命名为foo-1.0.tar.gz或者foo-1.0.zip
如果想要安装foo模块,就需要下载下foo模块,解压缩,然后在解压后的文件夹中运行
python setup.py install
这样最终foo.py文件将会被安装到一个合适python第三方包的地方。
这个简单的例子说明了几个Distutils的概念:1、用户和开发者有共同的接口,setup.py 唯一的不同是开发人员命令参数是sdist,用户是install;
如果你想开发出对用户来说,更简单的安装方式,可以创建出多中安装包。例如,开发人员在windows环境下,就可以创建出windows下的可执行文件。
用bdist_wininst命令
python setup.py bdist_wininst
那么将会创建一个foo-1.0.win32.exe的文件
同样用bdist_rpm命令可以创建一个RPM文件,bdist_pkgtool创建pkgtool(Solaris),bdist_sdux创建swinstall(HP_UX)文件。
通过运行下来命令可以知道可以创建什么样的文件。
python setup.py bdist --help-formats

1.3python的专有名词

模块:Python可重用的基本单元,有三种Python模块:纯python模块,扩展python模块和包
纯python模块:用python编写只包含一个.py文件
扩展python模块:用更低级的语言(比如C/C++)写的Python执行部分,通常包含一个动态预编译的文件例如.so文件对于Linux来说,.Dll文件对于Window来说
包:一个包含其他多个模块的模块。和其他不一样的地方就是包含__init__.py文件

1.4 Distutils的专有名词

模块分发:把多个模型分发作为一个下载文件
纯文件分发:只包含一个纯python模块和包的模型分发
非纯文件发放:至少包含一个扩展模型分发
分发的根:你源代码树的顶层目录。及setup.py所在的地方。


原创粉丝点击