1、介绍
Python作为一门解释性语言,其版本的更新和迭代非常快,并且Python2和Python3之间的语法和需要用到的库都不相同,因此在我们实际使用过程中就会经常遇到类似以下的问题:
1、想要跑一个项目A,项目A需要Python2的环境,并且依赖numpy==1.16.6版本,这个时候我们可以直接执行pip2 install numpy==1.16.6
给我们的系统Python2安装一个1.16.6版本的numpy,能够顺利运行项目A;
2、这个时候又想要尝试一个新的项目B,项目B虽然也可以在Python2中运行,但是需要numpy==1.11.2的较低版本,如果没有虚拟环境,为了跑通项目B,我们能做的只能是再次执行pip2 install numpy==1.11.2
给我们的系统Python2安装一个1.11.2版本的numpy库,但这个时候想要再次跑项目A,你会发现项目A又跑不通了。。。
3、同样的问题,如果你想要跑另一个依赖Python3的项目C,并且C项目要求使用Python3.7.9版本,而你的系统中只有Python3.6.9版本,如果没有虚拟环境,你就只能升级你的系统Python3,但代价就是你之前的一些依赖Python 3.6.9低版本的项目就会都无法运行
因此,Python虚拟环境的出现就是为了解决类似上述的三种问题,即Python项目对于不同版本Python、不同版本Python库的需求不同,我们可以针对具体的项目需求,创建一个个虚拟Python环境,完全与系统Python以及其他虚拟环境隔离,从而满足不同项目需求。
2、virtualenv和virtualenvwrapper创建虚拟环境
现在能够创建Python虚拟环境的途径有很多,常用的有anaconda
中的conda create
命令,以及virtualenv
和virtualenvwrapper
中的mkvirtualenv
命令,我个人比较喜欢使用mkvirtualenv
方法,非常简洁好用,此处主要介绍这个方法。
2.1 安装与配置
1、安装pip3
virtualenv和virtualenvwrapper也是Python库,为了能够直接使用它们,需要首先使用pip
将它们安装到系统Python库中,我这就是使用pip3
将它们安装到系统Python3库中。
因此首先安装pip3
,如果你已经有pip3
的话,可以略过该步骤。
直接通过apt-get
安装:
sudo apt-get install python3-pip
或者通过源码安装:
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
查看是否已经有pip3
:
which pip3
我的pip3安装在.local
下:
/home/zhanghm/.local/bin/pip3
2、安装virtualenv和virtualenvwrapper
sudo pip3 install virtualenv virtualenvwrapper
或者不用sudo
则默认安装在当前用户的.local
目录下。
3、修改.bashrc文件:增加以下内容
主要是为了方便能够在终端直接调用一些命令来与虚拟环境打交道。
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
如果在第2步没用sudo
进行安装,则该步骤为:
# virtualenv and virtualenvwrapper
export WORKON_HOME=~/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh
否则会报错:
ERROR: virtualenvwrapper could not find virtualenv in your path
4、执行source ~/.bashrc使环境变量生效
出现类似下面的输出:
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /home/zhanghm/.virtualenvs/postactivate
2.2 具体使用
主要是一些简单的使用命令:
1、创建虚拟环境:
mkvirtualenv cv -p python3
上述命令就可以创建一个名叫cv
的虚拟环境,并且该虚拟环境基于python3
;
-p
指明创建的虚拟环境使用哪个版本的python。
你还可以具体指明是使用哪个版本的python3,前提是你首先应该在系统中安装有这个版本的Python3,安装新版本的Python可以参我的另一篇博客Ubuntu16.04更新Python3.5到Python3.7靠谱方法:
mkvirtualenv cv -p python3.7
2、进入虚拟环境
一般在执行创建虚拟环境命令后就会直接进入到虚拟环境中,此时你会发现你的终端用户名前面会多一个括号括起来的你的虚拟环境名字:
如果你想要手动进入到这个虚拟环境,你可以执行:
workon cv
3、删除虚拟环境
rmvirtualenv cv
4、退出虚拟环境
deactivate