Python的包管理工具distribute,setuptools,easy_install与pip
时间:2014-04-29 13:42:22
收藏:0
阅读:358
刚开始学习Python时,看资料和别人介绍中提到过,安装Python的包有的用easy_install, setuptools, 有的使用pip,distribute。现在把这些相关的资料整理一下,能更清晰的了解Python的设计,关于这些可以参考http://guide.python-distribute.org/installation.html。
1.distutils
Python 自带的基本安装工具,适用于非常简单的应用场景。2.distribute
通过查阅Distribute的文档 https://pythonhosted.org/distribute/ 可知,目前它是 setuptools 的一个弃用版本。自从 setuptools0.7 发布之后,这两种工具已经合并,并且distribute也就没有再被提起过了。不过由于 setuptools 不支持 Python3 ,故在将来, distribute 将会有很大程序的优化和完善。3.setuptools
现在我们只要重点关注 setuptools 的使用就好了,它的官方文档 https://pythonhosted.org/setuptools/ 。 setuptools 是 Python Enterprise Application Kit(PEAK)的一个副项目,它是一组 Python 的 distutilsde 工具的增强工具(适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本),可以让程序员更方便的创建和发布 Python 包,特别是那些对其它包具有依赖性的状况。3.1 优点
相比 Python 自带的用于发布 Python 应用程序的模块 distutils,setuptools 的真正优点并不在于实现distutils 所能实现的功能——尽管它的确增强了distutils的功能并简化了 setup.py 脚本中的内容。setuptools 最大的优势是它在包管理能力方面的增强。它可以使用一种更加透明的方法来查找、下载并安装依赖包;并可以在一个包的多个版本中自由进行切换,这些版本都安装在同一个系统上;也可以声明对某个包的特定版本的需求;还可以只使用一个简单的命令就能更新到某个包的最新版本。给人印象最为深刻的是,即使有些包的开发人员可能还从未考虑过任何 setuptools 兼容性问题,我们依然可以使用这些包。3.2 特性
a. 在构建时使用 EasyInstall 工具自动查找、下载、安装、升级所依赖的软件包,EasyInstall 支持通过HTTP、 FTP、 Subversion 以及 SourceForge 下载软件包,并能自动扫描 PyPI 上的网页以找到下载链接。(对于熟悉 Perl 的用户, PyPI 是 Python 领域最接近的 CPAN了)b. 创建 Python Eggs,一种单文件的可导入的发布格式。
c. 在包中的目录中可以包含数据文件,允许代码访问这些数据文件。(Python 2.4 distutils 也支持这个特性,不过 setuptools 能为面向 Python 2.3 的包也提供这样的特性,此外还支持访问压缩包中的数据。)
d. 自动包含程序员的源代码树中的所有包,而不需要在独立的setup。py中逐个声明。
e. 自动在源代码发布中包含所有相关的文件,而无需创建MANIFEST。in文件,也不必在源代码树改变后强制生成 MANIFEST。
f. 自动为程序员项目中的任意数量的“main”函数生成封装脚本或者 Windows (控制台或者图行用户界面) .exe 文件。(注:这并不是 py2exe 的替代方案;这里生成的 .exe 需要基于已安装的 Python,而 py2exe 则不需要。)
g. 透明的 Pyrex(Pyrex 允许程序员编写混合 Python 和 C 数据类型的代码,并编译为 Python 的 C 扩展。)支持,这样程序员的 setup。py 得以列出 .pyx 文件并且即使最终用户没有安装 Pyrex 也能够运行(当然这需要程序员在源代码发布包中包含 Pyrex 生成的 C 代码)。
h. 对创建命令行别名的支持,setuptools 可以帮助程序员为发布包创建项目需要的、每个用户或者全局的快捷方式,这通常用于命令行或选项中。
i. 上传发布包到 PyPI 的支持,setuptools 可以帮助程序员将源码包或者 eggs 发布到 PyPI 上。
j. 可以以“开发模式”发布程序员的项目,这样它可以出现在 sys.path 中,而程序员依然可以直接编辑源代码的工作副本。
k. 方便的为 distutils 扩展新功能或者 setup() 参数,并能够发布可供不同的项目重复使用的扩展包,而无需复制代码。
l. 创建具有自动发现扩展功能的可扩展的应用程序或框架,只要在项目的安装脚本中简单的声明“入口点(entry points)”即可。
3.3 安装
Pypi源:https://pypi.python.org/pypi/setuptools3.3.1 windows
方法a:下载.exe文件,安装完成之后在Python安装目录下的Scripts目录下就会有easy_install.exe,将Scripts加到Path变量里,就可以使用它来安装Python包了,只需要将包名作为参数,它就会自动到Pypi里去查找并安装。方法b:下载ez_setup.py https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py 然后在命令行运行:python ez_setup.py进行安装。安装效果应该是和方法a是一样的,不过根据官网的文档,对于64位的机器,只能使用第二种方式进行安装。
3.3.2 Unix
Debian/Ubuntu系统可以直接使用apt-get安装:sudo apt-get install python-setuptoolsRedHat/Centos系统可以直接使用yum安装:
yum install setuptool方法a:通过引导程序 ez_setup.py 来安装。这个引导程序会联网下载最新版本 setuptools 来安装,同时也可以更新本地的 setuptools。
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py sudo python ez_setup.py更新setuptools:
sudo python ez_setup.py -U setuptools方法b:下载setuptools的egg包,然后通过sh安装。
wget https://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg sudo sh setuptools-0.6c11-py2.6.egg方法c:源码编译安装
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz tar zxvf setuptools-0.6c11.tar.gz cd setuptools-0.6c11 python setup.py install
4.easy_install
它是setuptools 和 distribute 自带的安装脚本,也就是一旦 setuptools 或 distribute 安装完毕, easy_install 也便可用. 最大的特点是自动查找 Python 官方维护的包源 PyPI , 安装第三方 Python 包非常方便。5.pip
pip 是一个安装和管理 Python 包的工具,是 easy_install 的一个替换品。pip 的目标非常明确 – 取代 easy_install. easy_install 有很多不足: 安装事务是非原子操作,只支持 svn,没有提供卸载命令,安装一系列包时需要写脚本; pip 解决了以上问题,已俨然成为新的事实标准.Pypi源:https://pypi.python.org/pypi/pip,pip的安装详情可以参考http://www.pip-installer.org/en/latest/
下面大致介绍一下pip的快速安装:
下载 get-pip.py :
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py运行:
python get-pip.py(如果setuptools or distribute 没有安装,get-pip.py会自动安装setuptools)
如果更新setuptools,运行:
pip install -U setuptools在 Linux:
pip install -U pip在 Windows :
python -m pip install -U pip
Debian/Ubuntu系统可以直接使用apt-get安装:
sudo apt-get install python-pipFedora/RedHat/Centos系统可以直接使用yum安装:
sudo yum install python-pip
评论(0)