前言
经常接触Python的人一定少不了和虚拟环境打交道。通过创建虚拟环境可以轻松在多个版本的Python之间切换,灵活安装不同版本的Python以及软件包以满足多变的开发环境需求。通常管理Python虚拟环境的方法有两种:一个是使用Anaconda,另一个则是使用Virtualenv。这两种方法使用都比较简单,至于具体选择使用哪种方法基本上全看个人喜好。不过对于我来说,在资源受限的设备如嵌入式设备上会使用Virtualenv,因为它没有大的安装包,占用的资源非常小。而在通用计算机上则会使用Anaconda,因为Conda真的非常好用。下面的内容主要记录一点两者管理虚拟环境的常用操作,包括创建、查询、复制以及删除的内容。
使用Anaconda
创建虚拟环境
在安装好Anaconda后,使用Conda创建虚拟环境的命令如下:
conda create -n env_name python==x.x.x
例如我要创建名为tensorflow
的虚拟环境,并且指定Python版本为3.6.9
,则对应的命令为:conda create -n tensorflow python==3.6.9
。
在创建完成后,Linux下输入source activate tensorflow
切换到创建的tensorflow虚拟环境。在Windows下对应的命令则为activate tensorflow
。要退出虚拟环境,Linux下输入source deactivate
,Windows下则输入deactivate
即可。
查询
在创建虚拟环境后,可输入conda info -e
或者conda env list
命令查询全部创建的虚拟环境信息。
复制
有时出于方便,不想从头创建环境及安装各种包,那么可直接复制一个类似的虚拟环境进行使用。使用Conda复制虚拟环境的命令如下:
conda create -n env_name --clone target_env_name
例如我想再创建一个名为tensorflow-2.3
的虚拟环境,但实际上这两个环境之间除了tensorflow版本不同,其他的基本一样。在这种情况下,可直接使用conda create -n tensorflow-2.3 --clone tensorflow
命令克隆此tensorflow虚拟环境,然后更换一下tensorflow版本即可。当然这个用法还可以用来修改虚拟环境的名字,不过倒是没什么必要,除非名字实在是丑。。
删除
如果发现机器上的虚拟环境过多,占用了太多磁盘空间,并且有的已经基本不用了。那么可以执行如下命令删除多余的虚拟环境释放磁盘空间:
conda remove -n env_name --all
例如我想把之前创建的名为tensorflow
的虚拟环境删除掉,那么对应的命令为:conda remove -n tensorflow --all
。
使用Virtualenv
Virtualenv与Anaconda有一些不同的是前者是Python的一个包,而后者则包含一个版本的Python。因此在使用Virtualenv之前需要先进行安装,以Python3为例,安装的命令如下:
pip3 install virtualenv
在Ubuntu上也可使用sudo apt-get install virtualenv
命令进行安装。
在安装完成后,如果需要创建名为tensorflow
的虚拟环境,则需要在指定存放虚拟环境的目录下先执行mkdir tensorflow
,然后再执行命令python3 -m virtualenv -p python3 tensorflow
。安装完成后可在tensorflow目录下看到相应的文件。
要切换到创建的虚拟环境输入source tensorflow/bin/activate
即可,要退出则输入deactivate
。可以看出创建的文件夹即是一个完整的虚拟环境。如果要删除虚拟环境的话,直接删除掉对应的文件夹即可。
当然,如果嫌麻烦的话,也可以安装VirtualenvWrapper来简化操作,具体的教程可参考Ubuntu中配置Python虚拟环境Virtualenv,在这里就不再做过多赘述了。