经常在群里看到有人问,conda到底怎么管理,python的环境怎么隔离。或者类似于python环境管理之类的。这里做一次我经验分享。这不是最优的管理经验,只是作为一个参考。起码我就是这么用的。
python的环境管理类型太多了。比如pyenv
、poetry
、conda
。各有千秋,但是我看很多做数据科学的,都是使用conda
。我也是从用python开始,也就是一直使用的是conda
。
anaconda是一个公司名字;
然后这个叫anaconda公司做的一个软件也叫anaconda。这个软件可以方便你在系统上管理你的python各个版本。比如可以让你的电脑同时拥有python3.7,python3.6, python2.7等各种版本。如果有的包冲突,你也可以管理不同的环境。冲突也没什么问题。
对于什么是anaconda
、minconda
、conda
。
anaconda
从软件这个角度来说,他是把常见的科学计算包,都给你打包好了。在你安装好之后,在base环境可以直接使用。就像是一个美味的包含各种美食的一个套餐
。minconda
相对于anaconda
。就是只是给你安装了一个最基础的python。没有把numpy、pandas、sklearn等优秀的包也给你安装上去。你要自己安装,就像是给你了一碗盖浇饭
,想吃别的?你要自己点。conda
就是一个管理工具,可以帮助你创建、修改 环境,是anaconda
和minconda
都带有的功能(你看名字也就看出来了)。conda
可以帮助你点菜
(也就是类似于pip的管理包),conda
可以帮助你找饭店
(比如python2.7这个饭店不符合你胃口,你就可以去找python3.9的饭店)。在学习python的时候,安装python的环境,你只要无脑安装anaconda就行了。安装方式和教程,看我之前的文章,也就是下面的这个二维码:
conda env list
比如上面的图中,base
环境只要是你安装了anaconda(包括minconda)都会有的。
比如别的环境dev
、forgroup
等都是我自己装的,每个人都不一样。
大部分培训班说到这可能就不说了,但是这里有个大坑。
base
确实即开即用,非常方便,但是你要是自己在base环境中,安装一些乱七八糟的包,就会把你的base环境搞崩溃。最后让你conda都损坏。有人可能问,有什么包会把环境搞坏呢。其实就是谷歌这鳖孙做的tensorflow
包就很容易把环境搞坏了。很多时候,在我们不知道哪家餐厅怎么样的时候,其实默认就是最好的。也就说虽然base环境我们不能瞎搞,但是内置了很多被anaconda选好的包,他们各个之间都不会互相冲突的。
所以虽然我们base环境不能直接拿来定制,但是我们复制一份,然后在复制的这一份上,做pip安装包、conda安装包之类的。
那么现在,我们基于base环境,做一个我们自己的环境,这个环境名称叫xbh0514
(含义是学不会0514。
conda create -n xbh0514 --clone base
create
代表创建一个新的环境(或者叫新餐厅).-n
是后面接名称,我这里设置的名称为xbh0514
.--clone
代表克隆一个环境,从哪里克隆?从base
环境克隆.上面的选餐厅之后,而且餐厅也盖完了,那你肯定要看看这个餐厅怎么样。怎么进去呢。就是直接使用下面命令进去。
conda activate xbh0514
进来之后,你想要安装包,比如你想要安装的包的名字叫geopandas
(我讨厌死这个包了)。
你可以直接使用pip安装,也可以使用conda安装,都是差不多的。
进入餐厅后,怎么出来呢?
conda deactivate
当你进入餐厅后,你发现里面的各个菜在互相打架(不同的python包互相不兼容,最后导致环境崩溃)。那么你这个时候就要关闭餐厅了。
conda remove -n forgroup --all
forgroup
这个环境删掉了(这个环境里面的所有内容,包括环境的名字,全都删掉,就没人知道你开过这家餐厅了)。那么你要是想要删除xbh0514
环境,你把forgroup
改为xbh0514
就行了。要注意下面几点:
xbh0514
环境和base
后面,没有任何关系。注意勾选☑️ 可用于所有项目,最后点击确定。添加好之后,就可以在python解释器看到列表:
看看右下角环境已经从dev
换成了xbh0514
。(这个时候,你电脑如果咆哮了,那就说明pycharm开始为这个xbh0514
环境构建索引了。)
你的vscode起码要有对应的python插件,比如下面这几个:
已经切换好了。
包安装在环境A, 结果在环境B里面找不到包
。list