使用Python以来,基本不可回避的就是setup.py文件,由于我们要安装各种各样的python软件或其它第3方package,但是常常使用python setup.py install进行安装,却不甚明白该文件的工作原理。由于目前工作触及了openstack,1个基于python的云操作系统,因此,理解1些python的基本知识是必须要的。故找时间了解了基本的python setup.py文件的制作。
1、1个简单的setup.py文件:
比如,我们常常使用的1个SSH的package:paramiko,其用于建立基于ssh协议的会话,下载地址为:https://github.com/paramiko/paramiko。
打开其中的setup.py文件,简单注释,以下所示:
Setup脚本是利用distutils进行编译、发包、安装模块的主要脚本。Setup主要的目的是将我们的发布包依照distutils描写的方式组织,方便开发安装。
其实,在setup.py文件中,主要包括以下内容:
S1、列出所有的packages,使用关键字packages和package_dir两个;
S2、列出所有的依赖模块,使用py_modules;
S3、列出扩大模块,包括扩大名和包、源代码文件、预处理选项如include、library选项,和其它的1些选项;
S4、文件发布版与依赖包的关系,使用==、>=、!=、<等
S5、直接安装scripts文件,使用scripts关键字;
S6、安装package data,使用package_data;
S7、安装1些其他文件,使用data_files;
S8、额外的meta-data数据,包括version、name、author、classifiers等,网址上介绍了meta-data数据的东西,这个是setup.py文件中必须的参数:
上面的(1)表示该字段是setup文件中必须的。这个就是我们当前的setup文件的编排格式。
2、setup文件使用:
理解了setup.py文件里面的字段含义,那末我们就能够学习setup文件的使用了,其主要有以下几种方式:
python setup.py build #编译
python setup.py install #安装,最基本的安装方式
python setup.py sdist #制作分发包,制作1个源码包,格式为zip/tar.gz
python setup.py bdist_egg #制作1个2进制分发包
python setup.py bdist_wininst #制作windows下的分发包,exe程序
python setup.py bdist_rpm #制作linux下的rpm包,需要rpm程序支持
下面我们开始编写1个setup.py文件,内容以下:
履行python setup.py sdist后,会生成1个文件包,里面会有对应的源码包:
到时候,客户端拿到这个紧缩包后,解压,并履行python setup.py install就能够进行安装。
3、setup.cfg文件:
Stackflow上的解释:
http://stackoverflow.com/questions/27077355/how-to-use-setup-cfg-instead-of-setup-py-with-python⑵⑺
The problem is that the setup.cfg file does not do what you want. It does not provide parameters to the setup function. It is used to supply parameters to the commands that setup.py makes available. You can list the supported commands with setup.py --help-commands. You should see something like:
Setup.cfg其实不是setup函数中的参数,而是setup.py文件中的1些参数,可使用setup.py --help-commands命令查看:
这只是python setup.py的参数,但是这其实不是直接需要写入setup.cfg文件中的。具体的,还要再继续查看,比如,sdist命令可以使用的参数以下:
可以看到,当我们需要制作源码的时候,可使用verbose、quiet等参数,这就是我们需要写入setup.cfg文件中的。
而setup.cfg的文件中是依照section去处理的,比如:
比如,当我们setup.cfg中以下时:
当我们履行python setup.py build安装的时候,实际履行的是以下命令:
参考:https://docs.python.org/2/install/index.html#distutils-configuration-files
4、distutils介绍:
setuptool通过封装distutils,简化了package的安装进程。Distutils,全称为:Python
Distribution Utilities,从python 1.6以来,distutils已成为python标准库的1部份,极大的简化了用户安装新模块、第3方包和标准工具,并且创建这些distribution的方式也极大的简化了。Distutils既为支持RPM的linux提供了创建RPM的方式,也提供了制作windows exe的方式。Distutils通过将setup.py、setup.cfg、source code、第3方编译包集成在1起,做成可用的package。
Distutils统1了linux和windows下python的安装方式,其实不辨别是rpm包还是tarball方式,只是履行python setup.py install便可进行安装。并且,可以令不同的开发者向同1块package进行工作。
1般来说,我们会顺次履行build和install,其中build会将所有的源文件进行编译,并放到同对应目录下,生成build/lib文件,源文件不限于python,也能够是C/C++。如果斟酌到build的速度,可使用--buuld-base指定build的目录。编译完成后,使用install安装,安装的进程,是将该目录下的文件拷贝到对应的代码目录下。
我们默许的安装目录是:
如果是默许的话,1般是标准的python安装目录,linux下1般prefix和exec-prefix是/usr,而windows下是C:\Program Files\Python,可以采取以下方式查询安装目录:
我们可使用以下参数去指定install的方式:
S1、--user:linux下的用户选择,确保该用户对安装目录有权限;
S2、--home:指定安装目录:
可以与--install-purelib、--install-scripts、--install-platlib、--install-data组合使用,确认各个子条目的安装目录。
S3、--prefix
上一篇 Qt之pro配置详解
下一篇 识别喜欢开发的程序员