Python中setuptools作什么用的?

归纳html

setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的加强工具(适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本),可让程序员更方便的建立和发布 Python 包,特别是那些对其它包具备依赖性的情况。python

1.简介

常常接触Python的同窗可能会注意到,当须要安装第三方python包时,可能会用到 easy_install命令。 easy_install是由PEAK(Python Enterprise Application Kit)开发的setuptools包里带的一个命令,因此使用easy_install其实是在调用setuptools来完成安装模块的工做。
Perl 用户比较熟悉 CPAN,而 Ruby 用户则比较熟悉 Gems;引导 setuptools 的 ez_setup 工具和随之而生的扩展后的 easy_install 与 “Cheeseshop”(Python Package Index,也称为 “PyPI”)一块儿工做来实现相同的功能。它能够很方便的让您自动下载,编译,安装和管理Python包。
 

2.优势

相比Python 自带的用于发布 Python 应用程序的模块distutils,setuptools 的真正优势并不在于实现distutils 所能实现的功能——尽管它的确加强了distutils的功能并简化了setup。py脚本中的内容。setuptools 最大的优点是它在包管理能力方面的加强。它可使用一种更加透明的方法来查找、下载并安装依赖包;并能够在一个包的多个版本中自由进行切换,这些版本都安装在同一个系统上;也能够声明对某个包的特定版本的需求;还能够只使用一个简单的命令就能更新到某个包的最新版本。给人印象最为深入的是,即便有些包的开发人员可能还从未考虑过任何 setuptools 兼容性问题,咱们依然可使用这些包。
特性  
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.安装

 

使用ez_setup。py安装

这是 setuptools 自豪的一种安装方式,只须要一个大约 8K 做为的脚本ez_setup。py,就能自动为用户安装包括 setuptools 自身在内的许多 Python 包。
使用这种方式,用户只须要下载 ez_setup。py 并运行,就能够自动下载和安装适合用户当前 Python 版本的适当的 setuptools egg 文件(固然,用户须要 Python 2.3.5 以上的版本,64 位操做系统的用户则须要 Python 2.4 以上的版本)。此外,这段脚本还会将可执行的  easy_install 脚本安装到用户全部的操做系统 Python 可执行脚本正常应该安装的位置(例如,Windows 用户会安装到 Python  安装目录下的 Scripts 目录中)。关于这种安装方法的更详细说明和注意事项,请参考其官方说明(见扩展阅读)。简单的安装命令以下:
wget -q ez_setup。py下载地址(见扩展阅读) 安装完后,最好确保
 

使用完整的安装包安装

固然,用户也可使用 setuptools 在 Python Cheese Shop 上发布的合适的完整的发布版原本安装。对于使用 Windows 的用户,这也是挺方便的方法,。
许多 Linux 发行版的官方包管理仓库都包含 setuptools 的某个版本。例如,若是你跟我同样使用 Ubuntu ,那安装 setuptools 只是简单的进行以下操做:
# apt-get install python-setuptools
 

4. 使用方法linux

使用方法很是简单,在命令行输入“easy_install 参数”便可。程序员

a、经过模块名称来安装。setuptools会自动搜索PyPI 以查找最新版本的模块。若是找到的话,她会自动下载、编译和安装:ubuntu

  例如:easy_install SQLObject框架

说明,安装过程可能须要权限,若是是ubuntu的话,能够加上sudo函数

b、指定查找页面("download page")来使用名称和版本信息来安装或升级一个模块:工具

  easy_install -f http://pythonpaste.org/package_index.html SQLObjectspa

c、从指定模块下载地址来下载模块源码并在下载成功以后编译安装操作系统

  easy_install http://example.com/path/to/MyPackage-1.2.3.tgz

d、在本地已经存在的egg文件基础上来安装模块

  easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg

e、升级一个已经安装的模块到最新版本,若是在PyPI中这个模块有最新版本。

  easy_install --upgrade PyProtocols

f、从源码中安装模块(源码已经下载并解压到当前文件夹下)(New in 0.5a9)

  easy_install .

g、模块卸载 easy_install -m package-name (好比easy_install -m pylab)

若是想删除经过easy_install安装的软件包,好比说:MySQL-python,能够执行命令:

easy_install -m MySQL-python

注:此操做会从easy-install.pth文件里把MySQL-python的相关信息抹去,剩下的egg文件,你能够手动删除。

 5. 其余

更多easyinstall的使用方法参考Easyinstall官方文档

注:经过easy_install安装软件,相关安装信息会保存到easy-install.pth文件里,路径相似以下形式:

   Windows:C:\Python25\Lib\site-packages\easy-install.pth

   Linux:/usr/local/lib/python25/site-packages/easy-install.pth

四、相关资源

a、setuptools模块下载地址:http://pypi.python.org/pypi/setuptools

b、setuptools在线文档:http://peak.telecommunity.com/DevCenter/setuptools

c、Easy install在线文档:http://peak.telecommunity.com/DevCenter/EasyInstall

d、可爱的 Python: 使用 setuptools 孵化 Python egghttp://www.ibm.com/developerworks/cn/linux/l-cppeak3.html

f、ez_setup.py脚本:http://peak.telecommunity.com/dist/ez_setup.py

 

以上是python下setuptools的简介 。

 

6. 关于 egg egg 是一个包含全部包数据的文件包。在理想状况中,egg 是一个使用 zip 压缩的文件,其中包括了全部须要的包文件。可是在某些状况下,setuptools 会决定(或被开关告知)包不该该是 zip 压缩的。在这些状况下,egg 只是一个简单的不曾压缩的子目录,可是里面的内容是相同的。使用单一的版本能够方便地进行转换,并能够节省一点磁盘空间,可是 egg 目录从功能和组织结构上来讲都是相同的。一直使用 JAR 文件的 Java? 技术的用户会发现 egg 很是熟悉

相关文章
相关标签/搜索