4.4 包的安装

setuptools引入了第一个安装包的有用命令easy_install。它通过一条命令即可从Egg归档文件中安装Python模块。遗憾的是,easy_install从一开始就因为它有争议的行为(如忽视系统管理员的最佳实践以及缺少卸载功能)而口碑不好。

pip项目提供了更好的安装包的方式。它的开发很活跃,维护良好,并且被包含在Python 3.4中1。它可以从PyPI、tarball或者Wheel(参见4.3节)归档中安装或卸载包。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

它的使用很简单:

$ pip install --user voluptuous
Downloading/unpacking voluptuous
 Downloading voluptuous-.tar.gz
 Storing download in cache at ./.cache/pip/https%%%2Fpypi.python.org%2
Fpackages%2Fsource%2Fv%2Fvoluptuous%2Fvoluptuous-.tar.gz
 Running setup.py egg_info for package voluptuous
  WARNING: Could not locate pandoc, using Markdown long_description.

Requirement already satisfied (use --upgrade to upgrade): distribute in
/usr/lib/python2.7/dist-packages (from voluptuous)
Installing collected packages: voluptuous
 Running setup.py install for voluptuous
  WARNING: Could not locate pandoc, using Markdown long_description.

Successfully installed voluptuous
Cleaning up...

也可以通过提供--user选项让pip将包安装在home目录中。这可以避免将包在系统层面安装而造成操作系统目录的污染。

如果要通过pip重复安装同一个包,可以设置本地缓存从而避免每次都去下载这个包。只需要将环境变量PIP_DOWNLOAD_CACHE指向一个目录,pip就用它来保存下载的tarball,并且在每次下载包之前先检查这个位置。这在使用tox时非常有用,tox需要下载包来构建虚拟环境。也可以在~/.pip/pip.conf文件中添加download-cache选项。

可以使用pip freeze命令列出当前已安装的包:

$ pip freeze
Babel==1.3
Jinja2==
commando=
...

所有其他的安装工具都正在被废弃以支持pip,所以使用它作为包管理的一站式解决方案应该不会有什么问题。