Python深入:Distutils安装包

一:简介

         尽管Python标准库已经支持很多的功能,但是有时还是会需要以第三方模块的形式添加新的功能到Python中。

         在最简单的场景中,是你要安装的模块,已经有了针对你的平台的安装版本,因此只需要像安装其他软件一样安装他们即可。比如针对Windows用户的安装程序,针对基于RPM的Linux用户的RPM包等等。这种情况,只需要将该安装包下载下来,直接安装即可,比如直接运行”rpm –install”。

         当然,事情不会一直这么简单。更多的时候,是需要从一个源码发布包开始安装,但只要该模块是按照标准方式进行打包发布的,从源码发布进行安装也非常简单。

         下载了一个模块的源码发布之后,可以使用Distutils简单的分辨出该模块是否是按照标准方式打包和发布的。第一,下载的包的名字通常包含了发布的名字和版本号,比如foo-1.0.tar.gz或者widget-0.9.7.zip;第二,解压之后,包含setup脚本setup.py,包含帮助文件README.txt或README等,该帮助文件说明构建和安装该模块发布的方法,Linux下就是运行命令:python  setup.py  install;Windows下则是:setup.py  install

         如果以上的条件都满足的话,那你已经知道了如何构建和安装下载的包了,直接运行上面的命令即可。除非你需要对构建过程进行定制,以非标准的方式安装,否则就不需要接着读本文档了。

 

二:标准构建和安装

         标准的构建和安装过程,只需要运行命令python  setup.py  install即可。必须在发布的根目录运行该命令,也就是setup.py所在的目录。

         比如,如果下载了源码发布文件foo-1.0.tar.gz,在Unix系统上,标准的做法是:

#gunzip -c foo-1.0.tar.gz | tar xf -    # unpacks into directory foo-1.0
#cd foo-1.0
#python setup.py install

         运行install命令,会依次执行构建和安装过程。当然也可以将其分步执行,比如可能需要将构建和安装交给不同的用户执行。下面的两条命令,首先是构建,然后就是安装:

python setup.py build
python setup.py install

         这样做时,会发现执行install命令时,它首先还是会执行build命令,因为已经执行过该命令,build目录中已经是最新的了,所以它直接跳过。

         一般情况下,如果只是安装从网上下载下来的包,则不需要分成两个步骤。不过这对于执行一些高级任务来说是有用的。

 

1:构建过程

         build命令,主要是将需要安装的文件放到发布根目录下的build子目录中,如果需要改变build目录的位置,可以使用build-base选项,比如:

python setup.py build --build-base=/path/to/pybuild/foo-1.0

         默认情况下,build子目录的结构如下:

build/
    lib/

或者是:

build/
    lib.<plat>/
    temp.<plat>/

         上面的<plat>会扩展为当前的OS平台以及Python版本。如果该发布只包含纯Python模块,则只会生成lib目录,也就是上面的第一种情况。如果发布中包含由C/C++编写的扩展模块,则会是第二种情况,此时,temp.plat目录中存放了由编译器、连接器产生的临时文件,这些临时文件不会被安装。在两种情况中,lib目录或者lib.plat目录中的文件都会被安装。

 

         2:安装过程

         在执行完build命令后(要么明确的运行,要么是在install中执行),install命令剩下的工作就比较简单了,它只是把build/lib或者build/lib.plat中的任何文件都复制到指定的安装目录中。

         如果没有指定安装目录,(比如仅执行setup.py install),则install命令就会把文件安装到第三方Python模块的标准路径中。标准路径根据平台的不同而不同。在Unix(以及Mac OS X)上,这还取决于要安装的模块是否包含扩展模块:

Platform

Standard installation location

Default value

Unix (pure)

prefix/lib/pythonX.Y/site-packages

/usr/local/lib/pythonX.Y/site-packages

Unix (non-pure)

exec-prefix/lib/pythonX.Y/site-packages

/usr/local/lib/pythonX.Y/site-packages

Windows

prefix\Lib\site-packages

C:\PythonXY\Lib\site-packages

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值