Python 的包管理工具 distribute, setuptools, easy_install 与 pip

        刚开始学习 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/setuptools 

3.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-setuptools

        RedHat/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-pip

Fedora/RedHat/Centos系统可以直接使用yum安装:

sudo yum install python-pip 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要解决问题"python -m pip install -U pip setuptools",你可以按照以下步骤进行操作: 1. 首先,打开命令提示符或终端窗口。 2. 输入命令"python -m pip install -U pip setuptools",这将更新pipsetuptools。确保你已经安装了Python 3.6.4版本。 3. 如果在执行命令时出现错误,请检查你的网络连接是否正常,并确保你有足够的权限来安装软件。 4. 如果问题仍然存在,你可以尝试使用代理服务器或更换网络环境,然后再次运行命令。 请注意,这些步骤是基于提供的引用内容\[1\]和\[3\]给出的。希望这些步骤能够帮助你解决问题。 #### 引用[.reference_title] - *1* *2* [Python第三方组件(库)安装(1)](https://blog.csdn.net/cch19930303/article/details/119954876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Windows10系统下更新pipsetuptools的错误总结](https://blog.csdn.net/kelvindream/article/details/78956165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值