Anaconda虚拟环境实践(1)——安装、创建/复制虚拟环境

2019-01-15  本文已影响0人  zbharper

Anaconda 是一个python的开源发布版本,最早使用它是因为其中集成了很多用于科学计算、数据分析及机器学习的python库,可以省去很多安装软件包的麻烦。但是anaconda真正的利器在于其中的conda包管理工具,它可以帮助我们方便的管理自己的python开发环境,不仅能够将不同开发项目所依赖的开发环境完全独立开来,还可以轻易的复制整个python环境到其他机器。这样,python开发项目的部署就变成了一件非常简单且易于维护的事情。

Anaconda的安装

官网上下载Linux_64bit python2.7版本的安装脚本到本地,用root权限执行该脚本,随后一路回车完成安装。

这里有个需要注意的地方:

当前版本的Anaconda安装脚本为Anaconda-2018.12-Linux-x86_64.sh,安装完成后,在.bashrc里并没有更新PATH环境变量,输入python会发现找不到该命令(linux系统没有预装python的情况下)。同时注意到.bashrc里加入了一个脚本

. /home/deepctrl/anaconda2/etc/profile.d/conda.sh

我们可以在当前shell环境下输入conda命令,但是输入which conda又没有输出,说明conda不是一个系统可执行文件,而是在./~bash.sh中加入的conda.sh脚本中的一个函数。

——对比之前使用的Anaconda版本(Anaconda2-5.2.0-Linux-x86_64.sh)安装完成后,~/.bashrc中更新了PATH变量(加入了anaconda2/bin路径),可以直接在当前环境下执行python、conda等可执行文件。

新版这个安装变动后,我们不能默认使用conda的base环境,而是必须要输入conda activate激活base环境后,才能进入到base的python开发环境中。这样base环境和用户自定义环境的隔离就更显式了(以前的版本下,可能安装完anaconda后稀里糊涂就开始用了,没有进入任何虚拟环境),有利于后续的管理。

创建新环境

手动创建一个全新环境
conda create -n new_env --python=2.7 ipython  # 制定python版本,预安装ipython
激活并进入自定义环境
conda activate new_env

在该环境下进入ipython,测试numpy,发现没有该模块(在base环境中可以导入)说明两个环境是隔离的。进一步测试,在该环境下安装redis

conda install redis redis-py

随后测试redis可用

(new_env) deepctrl@localhost:~$ redis-cli --version
redis-cli 3.2.0
(new_env) deepctrl@localhost:~$ python -c "import redis;print redis.__version__"
3.0.1

回到base环境conda activate base,再次测试redis,提示未安装

(base) deepctrl@localhost:~$ redis-cli --version
The program 'redis-cli' is currently not installed. You can install it by typing:
sudo apt install redis-tools

简单测试验证了conda环境间的隔离,各自安装软件互不影响。

复制环境

有两种办法复制环境:

一,在本机上,直接使用conda create -n new_env --clone old_env复制既有环境
二,如果要复制到其他机器,就要考虑导出当前环境到文件,利用文件再次创建环境

1) 导出环境

conda env export > ~/env.yaml

利用conda env export 导出的是个yaml格式的文件,该文件记录了环境名,软件源地址以及安装包列表
2) 使用yaml配置文件创建新环境

conda env create -f ~/env.yaml

在新的机器中可直接执行上述命令,生成的环境与复制源完全一样(包括环境名),如果想在同一台机器上复制,需要把yaml文件中的环境名修改为一个新的名字,否则会冲突。
【注】还有一种复制环境的方式
conda list --explicit > env.txt
conda create -n newenv -f env.txt
这种方式只能复制环境中以conda install安装的包,不能复制pip install安装的包,因此不建议使用。

上一篇下一篇

猜你喜欢

热点阅读