它是一个虚拟化,从电脑上独立开辟出来的环境。通俗的来说,虚拟环境就是借助虚拟机docker来把一部份内容独立出来,咱们把这部分独立出来的东西称之为 容器,在这个容器中,咱们能够只安装咱们开发须要依赖的包,各个容器之间相互隔离,互不影响。python
在使用 Python
开发的过程当中,工程一多,不免会碰到不一样的工程依赖不一样版本的库的问题;亦或者是在开发过程当中不想让物理环境里充斥各类各样的库,引起将来的依赖灾难。此时,咱们可使用虚拟环境 能够搭建独立的运行环境,使得单个项目的运行环境与其它项目互不影响。 docker
另外更值得一提的是:在虚拟环境中使用pip安装,不须要向系统目录中写入数据,能够绕过某些系统的权限设置。segmentfault
咱们能够经过virtualenv
和virtualenvwrapper
来实现虚拟环境的搭建。
virtualenv
能够经过python包管理工具pip进行安装:python3.x
pip install virtualenv
亦或者使用anaconda命令安装:bash
conda install virtualenv
virtualenv
virtualenv path/virtualenv_name
指定特定的python版本建立虚拟环境加上 -p
参数便可:app
virtualenv -p pythonx(.x) path/vituralenv_name
好比咱们建立 spider
工程使用 scrapy
框架去爬取某个网站的信息,咱们假设这个工程在路径为 ~/code/spider
,而且把虚拟环境直接放在 spider
工程目录下。框架
virtualenv ~/code/spider/py3_virtualenv
这样虚拟环境 py3_virtual
就建立好了。此时能够看到,在spider/py3_virtualenv
目录下面会有3个目录被建立:scrapy
bin
中包含一些在这个虚拟环境中能够用的命令,以及开启虚拟环境的脚本activate;include
中包含虚拟环境中的头文件,包括python的头文件;lib
中就是一些开发所依赖的库了....
此时,咱们仅仅是建立了虚拟环境,并无真正进入到虚拟环境中。ide
只须要开启虚拟环境bin目录中的脚本 activate
:工具
source virtualenv_path/bin/activate
对于spider工程来讲,进入刚刚建立好的虚拟环境:
source ~/spider/py3_virtualenv/bin/activate
当终端命令的用户前多出(虚拟环境名称)后,表明进入虚拟环境。
接下来就能够安装咱们须要的 scrapy
库了......
只须要经过如下命令便可退出当前虚拟环境:
deactivate
此时就回到了本机的物理环境中,若是你哪天忘记了虚拟环境的位置,那么之后就没法再次开启该虚拟环境!
直接将改革建立虚拟环境的py3_virtualenv
文件夹 删除掉便可.....
有了 virtualenv
为何还要学习使用 virtualenvwrapper
?
上面 virtualenv
结束时候提到:若是忘记了虚拟环境的位置,那么之后就没法再次开启该虚拟环境!
virtualenv
的最大的缺点就是,每次开启虚拟环境以前,要在虚拟环境所在目录的 bin
目录下 开启虚拟环境的脚本 activate
,所以咱们须要记住每一个虚拟环境所在的目录。
而 virtualenvwrapper
是经过配置环境变量 WORKON_HOME
把全部的虚拟环境都放在环境变量 WORKON_HOME
目录中,方便了虚拟环境的管理,且省去了每次开启虚拟环境的 source
操做,并且不一样虚拟环境之间能够直接进行切换,使得虚拟环境更加好用。
virtualenvwrapper
能够经过python包管理工具pip进行安装:
pip install virtualenvwrapper
亦或者使用anaconda命令安装:
conda install virtualenvwrapper
virtualenvwrapper
使用前 首先须要对 virtualenvwrapper
进行配置,它须要指定一个 WORKON_HOME
环境变量,而且运行一下初始化工具 virtualenvwrapper.sh
,virtualenvwrapper.sh
脚本在 /usr/local/bin/
目录下。 WORKON_HOME
环境变量的路径就是来存放各类虚拟环境的目录,咱们一般设置 WORKON_HOME
环境变量路径为 ~/.virtualenvs
,即命令以下:
export WORKON_HOME='~/.virtualenvs' source /usr/local/bin/virtualenvwrapper.sh
因为每次使用都须要执行这两次操做,所以咱们能够写在终端的配置文件中。例如,若是使用 bash
,则须要将以上两条命令添加到 ~/.bashrc
中,而后再执行 source ~/.bashrc
命令。
这样每次启动终端的时候就会自动执行上面两条指令。
mkvirtualenv vituralenv_name
执行以上命令后,就会建立一个名为 vituralenv_name
的虚拟环境,且它被存放在环境变量 WORKON_HOME
目录下。
注意:使用 virtualenvwrapper
的 mkvirtualenv
命令建立虚拟环境后,直接自动激活并进入该虚拟环境。
指定特定的python版本建立虚拟环境加上 -p
参数便可:
mkvirtualenv -p pythonx(.x) vituralenv_name
virtualenvwrapper
能够经过 workon
进入虚拟环境。
workon virtualenv_name
并且能够经过 workon
命令直接进行虚拟环境之间的切换!
virtualenvwrapper
同 virtualenv
同样,直接经过 deactivate
命令退出虚拟环境。
deactivate
rmvirtualenv vituralenv_name
特别声明一下:virtualenvwrapper
中的命令支持tab
键自动补全的哦!