本篇快速总结几个Python的常见配置工具,包括setuptools、pip、virtualenv。
setuptools
setuptools管理Python的第三方包,将包安装到site-package下,安装的包后缀一般为.egg,实际为ZIP格式。默认从 http://pypi.python.org/pypi 下载包,能够解决Python包的依赖关系。
安装了setuptools之后即可用 easy_install 命令安装包,有多种安装方式可以选择。
<span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 普通安装 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install /home/yeolar/pkg/PACKAGE.egg <span class="c" style="margin: 0px; padding: 0px;"># 从本地或网络文件系统中安装 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install http://trac-hacks.org/svn/iniadminplugin/0.11/ <span class="c" style="margin: 0px; padding: 0px;"># 从指定的下载路径安装 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install http://pypi.python.org/simple/PACKAGE/PACKAGE-0.1.2.4.tar.gz <span class="c" style="margin: 0px; padding: 0px;"># 从URL源码包安装,条件是PACKAGE-0.1.2.4.tar.gz包中的根目录中必须包括setup.py文件 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install -f http://pypi.python.org/simple/ PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 从web上面搜索包,并自动安装 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install <span class="nv" style="margin: 0px; padding: 0px;">PACKAGE</span><span class="o" style="margin: 0px; padding: 0px;">==</span>0.1.2.1 <span class="c" style="margin: 0px; padding: 0px;"># 指定包的版本,如果指定的版本高于现已安装的版本就是升级了 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install -U PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 升级到最新版本,不指定版本就会升级到最新版本 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install -U <span class="nv" style="margin: 0px; padding: 0px;">PACKAGE</span><span class="o" style="margin: 0px; padding: 0px;">==</span>0.1.2.2 <span class="c" style="margin: 0px; padding: 0px;"># 升级到指定版本 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> easy_install -m PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 卸载包,卸载后还要手动删除遗留文件</span>
pip
pip也是一个包管理工具,它和setuptools类似,如果使用virtualenv,会自动安装一个pip。
<span class="gp" style="margin: 0px; padding: 0px;">#</span> pip install PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 安装包 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> pip -f URL install PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 从指定URL下载安装包 </span><span class="gp" style="margin: 0px; padding: 0px;">#</span> pip -U install PACKAGE <span class="c" style="margin: 0px; padding: 0px;"># 升级包</span>
virtualenv
virtualenv是一个Python环境配置和切换的工具,可以用它配置多个Python运行环境,和系统中的Python环境隔离,即所谓的沙盒。沙盒的好处包括:
- 解决库之间的版本依赖,比如同一系统上不同应用依赖同一个库的不同版本。
- 解决权限限制,比如你没有 root 权限。
- 尝试新的工具,而不用担心污染系统环境。
<span class="gp" style="margin: 0px; padding: 0px;">$</span> virtualenv py-for-web
这样就创建了一个名为py-for-web的Python虚拟环境,实际上就是将Python环境克隆了一份。然后可以用source py-for-web/bin/activate 命令来更新终端配置,修改环境变量。接下来的操作就只对py-for-web环境产生影响了,可以使用 pip 命令在这里安装包,当然也可以直接安装。
<span class="gp" style="margin: 0px; padding: 0px;">$</span> <span class="nb" style="margin: 0px; padding: 0px;">source </span>py-for-web/bin/activate <span class="c" style="margin: 0px; padding: 0px;"># 启用虚拟环境 </span><span class="gp" style="margin: 0px; padding: 0px;">$</span> deactivate <span class="c" style="margin: 0px; padding: 0px;"># 退出虚拟环境</span>
有个virtualenv-sh包,对virtualenv做了一些终端命令的增强。安装之后,在~/.bashrc中添加配置:
. /usr/local/bin/virtualenv-sh.bash
它提供的几个常用的命令如:
mkvirtualenv <env_name> 在$WORKON_HOME创建虚拟环境 rmvirtualenv <env_name> 删除虚拟环境 workon [<env_name>] 切换到虚拟环境 deactivate 退出虚拟环境 lsvirtualenvs 列出全部的虚拟环境 cdvirtualenv [subdir] 进入虚拟环境的相应目录
$WORKON_HOME 的默认值为 ${HOME}/.virtualenvs 。