一、简介  

  pip 是一个安装和管理 Python 包的工具,python安装包的工具有easy_install, setuptools, pip,distribute等。distribute是setuptools的替代品,是对标准库disutils模块的增强,我们知道disutils主要是用来更加容易的打包和分发包,特别是对其他的包有依赖的包。distribute被创建是因为Setuptools包不再维护了。而pip是easy_install的替代品。

二、安装pip

# apt-get install python-pip

升级:

# pip install -U pip

三、pip包管理

安装包:

root@localhost:~# pip install django
Collecting django
  Using cached Django-1.9.5-py2.py3-none-any.whl
Installing collected packages: django
Successfully installed django-1.9.5

指定安装的软件包版本:

通过使用==, >=, <=, >, <来指定一个版本号。

root@localhost:~# pip install markdown==2.0

升级包:

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

# pip install -U django

搜索包:

# pip search "django"

列出已安装的包:

root@localhost:~# pip freeze
Django==1.9.5
Markdown==2.0

卸载包:

# pip uninstall djang

四、Requirements Format

pip freeze 和pip list两者都是列出已经安装的软件包,有什么区别呢。help出的解释如下:

freeze                  Output installed packages in requirements format.
list                    List installed packages.

当我们用virtualenv的时候,可以指定一个requirements.txt文件来解决依赖关系,用法如下:

# pip install -r requirements.txt

requirements.txt有一个固定的格式:软件包名==版本号,每行代表一个软件包。这样pip才能理解,如下:

feedparser==5.1.3
wsgiref==0.1.2
django==1.4.2
...

这就是所谓的”requirements format“;我们可以用pip freeze > requirements.txt,导出到文件里,然后在另一个地方pip install -r requirements.txt 再导入。

两者的区别可以理解为:pip list列出了所有的包,pip freeze 只列出由pip 安装的软件包,并输出成requirements format格式。