对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方提供的包同样非常重要。类似于java为了便于管理有人开发了maven等管理工作,而python自然而然也需要便捷的打包和发布工具,以下就介绍python的几个包管理方式。

distutils

  • Python自带的基本安装工具, 适用于非常简单的应用场景使用

通过distutils来打包,生成安装包,安装python包等工作,需要编写名为setup.py python脚本文件。如下代码:

  1. from distutils.core import setup
  2. setup(
  3. name = "testpackage",
  4. version = "1.0",
  5. description = "Distutils sample distribution testpackage",
  6. packages = ['TestPackage']
  7. )

通过上述代码可以进行打包或生成安装文件,并能进行安装

  1. 打包:python setup.py sdist
  2. 安装:python setup.py install
  3. windows下安装文件exe(在windows下才能生效):python setup.py bdist_wininst
  4. linux下rpm安装文件(在有rpm环境下才能生效):python setup.py sdist_rpm

进行打包,和生成Windows下可执行文件后,如下图所示:

生成了zip包和exe的可执行包,这时就可以通过解开 zip 包后用 python setyp.py install 来安装,或者在 Windows 下直接双击安装。安装完后会在 %python_home%Libsite-packages 下多出此安装包,你就可以爽爽地使用了。

setuptools

  • 针对 distutils 做了大量扩展,

尤其是加入了包依赖机制。不支持python3,安装完setuptools后会有 easy_install 安装地址:http://pypi.python.org/pypi/setuptools

windows

  1. 32位操作系统直接exe安装文件安装
  2. 64位操作系统下载名为ez_setup.py的python脚本文件运行,它会自动安装适合的egg文件并帮您安装(当前还不支持64位的exe安装文件安装,由于distutils安装兼容问题)

Linux

直接下载rpm源码安装包,如:

  1. rpm -ivh setuptools-0.6c11-1.src.rpm

Mac OS,Linux,其他系统

下载对应python版本的egg包,然后通过运行脚本的方式去安装,如

  1. sh setuptools-0.6c11-py2.7.egg

python版本支持

  • 32位系统至少需要python2.3.5或以上版本支持
  • 64位系统至少需要python2.4或以上版本支持

distribute

  • 类似于setuptools,支持python3,安装完distribute后会有easy_install。

easy_install

  • setuptools 和 distribute 自带的安装脚本,也就是一旦setuptools 或distribute安装完毕, easy_install 也便可用了。

%python_home%Scripts 下会有对应的可执行文件,如 easy_install.exe,最大的特点是自动查找 Python 官方维护的包源
PyPI , 安装第三方 Python 包非常方便。

文档:http://peak.telecommunity.com/DevCenter/EasyInstall

  1. easy_install 包名==版本号 ## 安装第三方包
  2. easy_install --help ## 来查看命令详情

pip

  • 目标是取代easy_install。

easy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令,安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档;

使用:

  • 安装: pip install [PACKAGE_NAME]
  • 升级:pip install -U [PACKAGE_NAME]
  • 卸载: pip uninstall [PACKAGE_NAME]
  • 查询包: pip search [PACKAGE_NAME]
  • 列出安装的包及其版本:pip freeze
  • 查看帮助:pip help
  • 通过使用==, >=, <=, >, <来指定一个版本号

下载地址:https://pypi.python.org/pypi/pip 通过 python setup.py install 来安装,通过 pip --version 来查看版本。

distutils2

  • setuptools 和 distribute 的诞生是因为 distutils 的不济, 进而导致目前分化的状况。它将成为 Python 3.3 的标准库 packaging , 并在其它版本中以distutils2 的身份出现; 换句话说, 它和 pip 将联手结束目前混乱的状况。

virtualenv

  • 用来创建隔离的python环境,处理python环境的多版本和模块依赖。

在默认安装下 virtualenv 安装的是 setuptools 而不是 distribute,如果想安装 distribute,需要使用 --distribute 参数:

  1. python virtualenv.py --distribute

安装完后在 python_homescripts 目录下有 virtualenv.exe 可执行文件。使用 virtualenv mysite 创建新的python环境 mysite,并且已有 pipeasy_install

  1. virtualenv [OPTIONS] DEST_DIR
  2. --version显示当前版本号。
  3. -h, --help显示帮助信息。
  4. -v, --verbose显示详细信息。
  5. -q, --quiet不显示详细信息。
  6. -p PYTHON_EXE, --python=PYTHON_EXE指定所用的python解析器的版本,比如 --python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器
  7. --clear清空非root用户的安装,并重头开始创建隔离环境。
  8. --no-site-packages令隔离环境不能访问系统全局的site-packages目录。
  9. --system-site-packages令隔离环境可以访问系统全局的site-packages目录。
  10. --unzip-setuptools安装时解压SetuptoolsDistribute
  11. --relocatable重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。
  12. --distribute使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。
  13. --extra-search-dir=SEARCH_DIRS用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的-extra-search-dir路径。
  14. --never-download禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。
  15. --prompt==PROMPT定义隔离环境的命令行前缀。