花了两天,终于把Python的setup

来源:Python编程时光作者:写代码的明哥

1.为什么需要对项目分发打包?

平常我们习惯了使用pip来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发者为我们默默地为我们做了所有繁杂的工作,而这个过程就是打包。

打包,就是将你的源代码进一步封装,并且将所有的项目部署工作都事先安排好,这样使用者拿到后即装即用,不用再操心如何部署的问题(如果你不想对照着一堆部署文档手工操作的话)。

不管你是在工作中,还是业余准备自己写一个可以上传到PyPI的项目,你都要学会如何打包你的项目。

Python发展了这么些年了,项目打包工具也已经很成熟了。他们都有哪些呢?

你可能听过disutils、distutils、distutils2、setuptools等等,好像很熟悉,却又很陌生,他们都是什么关系呢?

2.包分发的始祖:distutils

distutils是Python的一个标准库,从命名上很容易看出它是一个分发(distribute)工具(utlis),它是Python官方开发的一个分发打包工具,所有后续的打包工具,全部都是基于它进行开发的。

distutils的精髓在于编写setup.py,它是模块分发与安装的指导文件。

那么如何编写setup.py呢?这里面的内容非常多,我会在后面进行详细的解析,请你耐心往下看。

你有可能没写过setup.py,但你 使用过setup.py来做一些事情,比如下面这条命令,我们经常用它来进行模块的安装。

$pythonsetup.pyinstall

这样的安装方法是通过源码安装,与之对应的是通过二进制软件包的安装,同样我也会在后面进行介绍。

3.分发工具升级:setuptools

setuptools是distutils增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发Python包。大部分Python用户都会使用更先进的setuptools模块。

distribute,或许你在其他地方也见过它,这里也提一下。

distribute是setuptools有一个分支版本,分支的原因可能是有一部分开发者认为setuptools开发太慢了。但现在,distribute又合并回了setuptools中。因此,我们可以认为它们是同一个东西。

还有一个大包分发工具是distutils2,其试图尝试充分利用distutils,detuptools和distribute并成为Python标准库中的标准工具。但该计划并没有达到预期的目的,且已经是一个废弃的项目。

因此,setuptools是一个 的,可靠的Python包安装与分发工具。

那么如何在一个干净的环境中安装setuptools呢?

主要有两种方法:

源码安装:在


转载请注明:http://www.xxcyfilter.com/cxrs/cxrs/11966.html