conda虚拟环境总结与解读

  • Post author:
  • Post category:其他




前言

csdn上有很多关于conda的文章,但是一直没有一个宏观一些的文章,我将从宏观角度出发,对文章进行一个整合,解读,将新同学从conda环境入门到配置,应用全流程进行解读。

当然,这篇文章因为是宏观一些,可能很多同学不能一次性看懂,没关系,这个可以反复看,在不同阶段都可以提供帮助。



conda环境概述



conda有什么用

一般需要用conda的时候,python已经学到一定程度了,开始进行一些应用了,这时就会有一种场景:A任务需要x,y包,B任务需要z,w包,但是y包和z包冲突,你无法同时做AB任务。

这时就需要用两个conda环境,分别安装xy包以及zw包,两个环境互相隔离,互不影响。

具体点,比如A代码需要tensorflow 1,B代码需要tensorflow 2,这也需要两个环境来分别承载。

进一步,如果你觉得某个环境不好了,直接进行一个删除,重装环境也很容易。

很好用吧,至于具体怎么在各种IDE中用,怎么切换,大致就如下图,很方便,配置好以后就可以一键切换。

在这里插入图片描述



conda的环境层级

前面说了,conda可以创建若干个虚拟环境,你的电脑也可以安装python环境,miniconda也会自带python环境,这几个环境有什么关系呢?

首先是电脑的python环境和Miniconda环境应该是同一等级的,那当你在命令行里运行python命令的时候,优先选择哪个取决于环境变量的配置。一般安装了Miniconda,尤其是勾选了将路径添加到path后,默认的环境就会变成Miniconda自带的python。


环境变量是什么

我们把这两个称作基础环境,在miniconda里一般叫base或者root。

之后就是conda create创建的虚拟环境了,这些都是子环境。虽说叫子环境,但是实际上实际使用base和其他环境没太大区别,只不过不可以删除,所以从逻辑上我们把他提高高度,把全局的包都按在base里。

请添加图片描述



Miniconda安装



与Anaconda的对比

很多人推荐安装anaconda,但是我推荐miniconda。

anaconda相当于一大堆包+conda工具,但是实际上这一大堆包没几个能用上的,占用空间太大,而且重装也很麻烦。

miniconda相当于一点基础包+conda工具。缺的包到时候自己安装就好。

我推荐尽量用miniconda从头开始安包,你对包的理解会更深。



注意版本与安装包来源

很多人就喜欢往高版本安,但是你去看工业界,都是用的稳定版,高版本一方面不稳定,另一方面环境适配也不太好。容易出现基础环境下包冲突的问题。

所以推荐安装3.7版本64位的Miniconda。

还有,推荐到官网下载,镜像网站下下来的,可能会有问题,这边有一个朋友就是被镜像搞了一下午心态,结果换回官网一下就成了。


Miniconda下载



conda命令

conda工具的命令网上有很多。


conda常用命令

需要注意的是,在虚拟环境里(包括base环境)安装包的时候,尽量用conda而不是pip,因为conda在包依赖的管理上更好。当我们conda安不了的时候,才能用pip。

虽然在conda环境里用pip也可以把包安到虚拟环境里,但是终归会有未知的影响。

conda install package_name



jupyter notebook安装+扩展



安装层级

首先你要知道,jupyter notebook是一个IDE,一个用户只需要一个IDE即可,而IDE可以调用各种conda虚拟环境,这说明jupyter notebook的层级,应该是miniconda级别的,是基础环境级别的。

所以直接在base里运行命令安装



jupyter notebook

conda install jupyter


jupyter安装



虚拟环境切换插件:nb_conda

光有虚拟环境还不行,要想在jupyter notebook里切换,需要一个插件。

conda install nb_conda

不过,后面还需要在conda环境里安装ipykernel才行。



主题切换插件:jupyter_themes

换一个清新的主题,调一调字体等布局,会很舒服。


切换主题



扩展插件集合:nb_extensions

更多插件可以提高效率。


扩展插件



conda环境创建与基本配置

一般安装只需要两个注意点,一个是name,一个是python版本

如果没有特别要求,一般安装3.7或者3.8。不加python版本命令,他就会安装3.10,这个版本的python不是很好用。

conda create -n env_name python=3.8

之后就可以激活conda环境进行进一步配置了

conda activate env_name

安装ipykernel,否则不会被nb_conda插件识别出来。很多文章里都写得是安装jupyter notebook,他们比较菜,没有认识到本质,其实只需要一个kernel即可,没必要安装整个jupyter.

conda install ipykernel



conda环境完善



基本命令

到这里,在jupyter notebook里就可以随意切换conda环境了,之后就是环境自定义了,想安什么包就安什么包即可。

conda install package_name



包找不到的情况

有时候conda找不到,可以添加-c conda-forge命令使用额外源,以pynput库举例

conda install pynput -c conda-forge

最后的最后,没办法了,你再用pip

pip install package_name



下载速度太慢

这个主要是因为软件包源头


conda换源



使用场景:IDE中使用



jupyter notebook中

其实这个前面已经说完了。



vscode&PyCharm

这两个IDE都可以在右下角切换环境,其中conda环境也可以切换。



进阶:Miniconda目录结构

在这里插入图片描述

第一级是Miniconda根目录,下面有若干个文件夹:

  1. bin有二进制文件
  2. scripts也是可执行的脚本文件
  3. Lib是base环境的库,其中site-packages是conda install的位置
  4. envs是虚拟环境目录。

在这里插入图片描述

envs下有若干目录,目录名字与虚拟环境名字对应

在这里插入图片描述

进入某个虚拟环境目录,Lib目录下面是虚拟环境的库

在这里插入图片描述

其中site-packages是conda install的位置。

这种层级结构符合我们前面说的,虽然base用的时候和虚拟环境类似,但是本质上base是凌驾于虚拟环境之上的。



版权声明:本文为weixin_50295745原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。