当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils, 显得较为混乱。

简介:

1.自己编写程序打包工具
distutils : 

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

使用方法:
为项目创建 setup.py 脚本
执行 setup.py install 可进行安装

setuptools : 

针对 distutils 做了大量扩展, 尤其是加入了包依赖机制. 在部分 Python 子社区已然是事实上的标准;

distribute :

 由于 setuptools 开发进度缓慢, 不支持 Python 3, 代码混乱, 一帮程序员另起炉灶, 重构代码, 增加功能, 希望能够取代 setuptools 并被接纳为官方标准库, 他们非常努力, 在很短的时间便让社区接受了 distribute;

2.从pypi下载并安装程序
easy_install :

 setuptools 和 distribute 自带的安装脚本, 也就是一旦 setuptools 或 distribute 安装完毕, easy_install 也便可用. 最大的特点是自动查找 Python 官方维护的包源 PyPI , 安装第三方 Python 包非常方便; 使用:
setuptools / distribute 都只是扩展了 distutils;
easy_install [PACKAGE_NAME] 自动从 PyPI 查找/下载/安装指定的包;

pip : 

pip 的目标非常明确 – 取代 easy_install. easy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令, 安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档; 使用:
安装: pip install [PACKAGE_NAME]
卸载: pip uninstall [PACKAGE_NAME]
支持从任意能够通过 VCS 或浏览器访问到的地址安装 Python 包

最后

distutils2 : 

setuptools 和 distribute 的诞生是因为 distutils 的不济, 进而导致目前分化的状况. 而 Guido 并未接纳 distribute 为官方标准, 并说明了原因. 开发者在失落之余明确了新的方向和任务 – distutils2, 它将成为 Python 3.3 的标准库 packaging , 并在其它版本中以 distutils2 的身份出现; 换句话说, 它和 pip 将联手结束目前混乱的状况;

安装:

1.安装distribute

 curl http://python-distribute.org/distribute_setup.py | python
 curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

2.安装pip

curl -O http://pypi.python.org/packages/source/p/pip/pip-1.0.tar.gz
tar xvfz pip-1.0.tar.gz
cd pip-1.0
python setup.py install 

3.pip使用

安装package
$ pip install Markdown

列出安装的packages
$ pip freeze

安装特定版本的package
通过使用==, >=, <=, >, <来指定一个版本号。
$ pip install 'Markdown<2.0'
$ pip install 'Markdown>2.0,<2.0.3'

升级包
升级包到当前最新的版本,可以使用-U 或者 --upgrade
$ pip install -U Markdown

卸载包
$ pip uninstall Markdown

查询包
pip search "Markdown"
PS -- 包安装后的py文件路径:/usr/local/lib/python2.7/dist-packages

4.问题

有时候,可能你发现pip不能用;将python目录加到path里面即可