异步社区

异步社区是国内领先的IT专业图书社区,由人民邮电出版社主办,致力于优质学习内容的出版和分享。

34篇博客

Python数据可视化编程实战(二): 安装virtualenv和virtualenvwrapper

异步社区2018-12-26 11:35
1.3安装virtualenv和virtualenvwrapper


如果同时在多个项目上工作,或是需要在不同项目间频繁切换,你会发现将所有的软件都安装在操作系统层级上不是一个最佳选择。因为当需要在不同系统(产品环境)上运行软件时,这种方式会带来问题。如果此时才发现缺少特定的软件包,或是产品环境中已经安装的软件包存在版本冲突,将是非常痛苦的。为避免这种情况发生,可以选择使用virtualenv。


Zvirtualenv是由Ian Bicking创建的开源项目。通过这个项目,开发人员可以把不同项目的工作环境隔离开,从而能够更容易地维护多种不同的软件包版本。


举例来说,有一个遗留Django网站系统是基于Django 1.1和Python 2.3版本开发的,但与此同时,一个新项目要求必须基于Python2.6来开发。在我工作过的项目中,根据项目的需要同时使用多个版本的Python(以及相关软件包)的情况非常普遍。


virtualenv能够让我们很容易地在不同的运行环境之间切换。如果需要切换到另外的机器或者需要在产品服务器(或客户的工作站主机)上部署软件,用virtualenv能够很容易地重新构建出相同的软件包环境。


1.3.1 准备工作
安装virtualenv需要用到Python和pip。pip是Python软件包的安装和管理工具,它是easy_install的替代工具。本书中大部分的软件包都是用
pip工具进行管理的。只需在终端中以root身份执行如下命令,就可以很容易地完成pip的安装:
# easy_install pip
virtualenv本身已经相当不错了,然而如果配合virtualenvwrapper,一切会变得更加简单,并且组织多个虚拟环境的工作也会更加容易。
virtualenvwrapper的功能特性请参考其官网。


1.3.2 操作步骤
安装virtualenv和virtualenvwrapper工具的步骤如下。


(1)安装virtualenv和virtualenvwrapper。
$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper
#创建保存虚拟环境的目录,并使用export导出为环境变量。
$ export VIRTENV=~/.virtualenvs
$ mkdir -p $VIRTENV
#使用source命令调用(执行)shell脚本来激活它。
$ source /usr/local/bin/virtualenvwrapper.sh
#创建一个虚拟环境
$ mkvirtualenv virt1


(2)在创建的virt1环境中安装matplotlib。
(virt1)user1:~$ pip install matplotlib


(3)最好把以下代码添加到~/.bashrc中。
source /usr/local/bin/virtualenvwrapper.sh
下面是一些有用的频繁使用的命令。
¡mkvirtualenv ENV:创建名为ENV的虚拟环境并激活。
¡workon ENV:激活先前创建的ENV虚拟环境。
¡deactivate:退出当前虚拟环境。
pip不但提供了安装软件包的方法,而且可以记录操作系统上安装的Python软件包及版本。命令pip freeze能打印出当前环境所安装的软件包和版本号。
$ pip freeze
matplotlib==1.4.3
mock==1.0.1
nose==1.3.6
numpy==1.9.2
pyparsing==2.0.3
python-dateutil==2.4.2
pytz==2015.2
six==1.9.0
wsgiref==0.1.2


我们看到,即使我们只安装了matplotlib,仍然有许多其他软件包被安装到系统中。除去pip本身依赖的wsgiref,其他的都是matplotlib依赖的软件包,它们随着matplotlib被自动安装进来。当把项目从一个环境(很有可能是一个虚拟环境)迁移到另一个环境中时,目标环境同样需要安装所有必须的软件包(和源环境相同版本),来保证代码能正常运行。如果两个不同的环境包含不同的软件包、甚至是相同软件包的不同版本,是非常容易出问题的。这会导致程序执行过程中的冲突或者无法预期的行为。为了避免这个问题,pip freeze可以用来保存一份当前环境配置的复制文件。以下命令会把命令的结果保存到requirements.txt文件中:
$ pip freeze > requirements.txt


这个文件可以用来在新环境上安装所有必需的库:
$ pip install –r requirements.txt


运行以上命令,所有必需的软件包的指定版本会被自动安装到系统中。这样我们就确保了代码运行的环境始终是一致的。为每一个开发项目创建一个虚拟环境和一个requirements.txt文件是一个非常好的实践。因此建议读者在安装软件包前先创建一个新的虚拟环境,以避免和其他项目发生冲突。


下面是从一个机器迁移到另一个机器的全部流程。
¡在机器1上:
$ mkvirtualenv env1
(env1)$ pip install matplotlib
(env1)$ pip freeze > requirements.txt 

¡在机器2上:
$ mkvirtualenv env2
(env2)$ pip install -r requirements.txt 


原文网址:       https://www.epubit.com/book/detail/21642
内容来源:异步社区;版权属【人民邮电出版社 异步社区】所有,转载已获得授权;未经授权,不得以任何方式复制和传播本书内容,如需转载请联系异步社区。