setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的增强工具(适用于 Python 2.3.5 以上

的版本,64 位平台则适用于 Python 2.4 以上的版本),可以让程序员更方便的创建和发布 Python 包,特别是那些对其它包具有依赖性的状况。



 

Application Kit)开发的setuptools包里带的一个命令,所以使用easy_install实际上是在调用setuptools来完成安装模块的工作。


Perl 用户比较熟悉 CPAN,而 Ruby 用户则比较熟悉 Gems;引导 setuptools 的 ez_setup 工具和随之而生的扩展后的 easy_install 与 “Cheeseshop”


(Python Package Index,也称为 “PyPI”)一起工作来实现相同的功能。它可以很方便的让您自动下载,编译,安装和管理Python包。


优点


编辑


相比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)”即可。





上述是对setuptools的一个简述,下面是对setuptools安装流程:(Linux能连接外网)



1、下载setuptools的tar包



wget https://pypi.python.org/packages/ff/d4/209f4939c49e31f5524fa0027bf1c8ec3107abaf7c61fdaad704a648c281/setuptools-21.0.0.tar.gz#md5=81964fdb89534118707742e6d1a1ddb4



2、解压tar包



setuptools-21.0.0.tar.gz



3、Python(要求Python2.7.6以上版本)编译



进入根目录下:Python2.7 setup.py build



4、安装



Python2.7 setup.py install






报如下错:


creating 'dist/setuptools-0.6c11-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it 
  
Traceback (most recent call last): 
  
  File "setup.py", line 94, in <module> 
  
    scripts = scripts, 
  
  File "/usr/local/lib/python2.7/distutils/core.py", line 152, in setup 
  
    dist.run_commands() 
  
  File "/usr/local/lib/python2.7/distutils/dist.py", line 953, in run_commands 
  
    self.run_command(cmd) 
  
  File "/usr/local/lib/python2.7/distutils/dist.py", line 972, in run_command 
  
    cmd_obj.run() 
  
  File "/opt/oracle/sor/install/setuptools-0.6c11/setuptools/command/install.py", line 76, in run 
  
    self.do_egg_install() 
  
  File "/opt/oracle/sor/install/setuptools-0.6c11/setuptools/command/install.py", line 96, in do_egg_install 
  
    self.run_command('bdist_egg') 
  
  File "/usr/local/lib/python2.7/distutils/cmd.py", line 326, in run_command 
  
    self.distribution.run_command(command) 
  
  File "/usr/local/lib/python2.7/distutils/dist.py", line 972, in run_command 
  
    cmd_obj.run() 
  
  File "/opt/oracle/sor/install/setuptools-0.6c11/setuptools/command/bdist_egg.py", line 236, in run 
  
    dry_run=self.dry_run, mode=self.gen_header()) 
  
  File "/opt/oracle/sor/install/setuptools-0.6c11/setuptools/command/bdist_egg.py", line 527, in make_zipfile 
  
    z = zipfile.ZipFile(zip_filename, mode, compression=compression) 
  
  File "/usr/local/lib/python2.7/zipfile.py", line 681, in __init__ 
  
    "Compression requires the (missing) zlib module"

请先安装zlib,因为setuptools安装,依赖zlib;



安装zlib,请参考:



zlib安装完成,对Python2.7.6重新编译安装即可,无需再次指定安装路径:



到Python根目录下:



执行命令:make && make install