文章目录
前言
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。
还有,推荐到官网下载,镜像网站下下来的,可能会有问题,这边有一个朋友就是被镜像搞了一下午心态,结果换回官网一下就成了。
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
虚拟环境切换插件: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
下载速度太慢
这个主要是因为软件包源头
使用场景:IDE中使用
jupyter notebook中
其实这个前面已经说完了。
vscode&PyCharm
这两个IDE都可以在右下角切换环境,其中conda环境也可以切换。
进阶:Miniconda目录结构
第一级是Miniconda根目录,下面有若干个文件夹:
- bin有二进制文件
- scripts也是可执行的脚本文件
- Lib是base环境的库,其中site-packages是conda install的位置
- envs是虚拟环境目录。
envs下有若干目录,目录名字与虚拟环境名字对应
进入某个虚拟环境目录,Lib目录下面是虚拟环境的库
其中site-packages是conda install的位置。
这种层级结构符合我们前面说的,虽然base用的时候和虚拟环境类似,但是本质上base是凌驾于虚拟环境之上的。