目录
1.conda虚拟环境与隔离base中包环境简介
1.1 base环境
1.2 conda创建的虚拟环境
2.以 tensorflow2.3.1为主体搭建虚拟环境步骤
2.1 创建一个名字为也叫tensorflow2.3.1的虚拟环境
2.2 从base环境转到 tensorflow2.3.1环境
2.3 通过pip安装2.3.1版本的tensorflow
2.4 通过pip安装2.4.3版本的keras
3.添加kernel使base环境上的jupyter上也能使用我们创建的tensorflow2.3.1环境
3.1 安装 ipython包
3.2 安装 ipykernel包
3.3将环境kernel导入jupyter
4.在jupyter中使用我们创建的环境
4.1 通过new新建我们tensorflow2.3.1环境的交互脚本
4.2 在 交互脚本内部修改kernel
5.参考致谢
base环境就是指直接Anconda目录下(与envs目录虚拟环境不同)的包环境(D:\Anaconda\Anaconda3\Lib\site-packages)与直接Anconda目录下的python解释器。这也侧面说明anconda相当于一个python,是python的发行版。
通过系统cmd命令行(前提系统path设置了anconda路径)或者Anoanda Prompt(相当于anconda自带命令行)命令 conda create -n abcdefg python=x.x 可以创建一个名字为 abcdefg ,python版本为下 x.x 的虚拟环境。这个名字为 abcdefg 的虚拟环境存储在envs文件夹内。
该虚拟环境abcdefg与base,或者其他envs中的虚拟环境的python解释器与site-packages是隔离的,可以避免不同包版本依赖造成的冲突。
本次主要注意的依赖包兼容为 python3.6.5 ,Tensorflow=2.3.1 ,numpy=1.18.5 ,keras=2.4.3【1】。还得注意有的包指定版本install通过conda行不通,因此可以统一用 pip install 包名==x.x。此外,对于python3的环境,pip与pip3等价【2】。
conda create -n tensorflow2.3.1 python=3.6.5
以下是创建成功后的显示,下图的虚拟环境名不是之前创建的abcdefg而是tensorflow2.3.1,因为这个截图是我早些时候创建tensorflow2.3.1虚拟环境(conda create -n tensorflow2.3.1 python=3.6.5)时截的。
conda activate tensorflow2.3.1
在Anconda4.8以前,直接pip命令安装的包不是默认安装在你虚拟环境里的site-packages里(D:\Anaconda\Anaconda3\envs\tensorflow2.3.1\Lib\site-packages)的,而是安装在base环境里,因此我下图使用了当前虚拟环境下pip绝对路径【3】,对于我2020版(Anaconda3-2020.02-Windows-x86_64)来说使用绝对路径调用pip,可以说是多余的。并且上文讲到pip与pip3在python3是等价的,因此可以直接使用命令:
pip install tensorflow==2.3.1
一定要注意是在你要配置的虚拟环境下执行的pip,例如下图命令行窗口每行命令提示符前头都有当前环境名,下图为 “(tensorflow2.3.1)”。另外,我发现该命令行窗口在下载或加载东西时你拿鼠标点一下窗口里任意位置,这样例如各种进度条会定在那里不动,你回车一下就又动起来了。
由于下载tensorflow时numpy1.18.5作为依赖包下载了,经验上说,我们就暂时不用管numpy了。
同 2.3 ,在确保是该虚拟环境下的情况下输入命令:
pip install keras==2.4.3
此外,如果你感兴趣,可以使用命令pip list查看该环境下包。
当我们的anconda中base有了一个jupyter后,为了方便,我们不想每创建一个环境都安装一个jupyter,因此,我们想通过一个办法,让base中的jupyter也能灵活new一个我们新创建环境的脚本解释器
什么办法呢,就是通过调用一个我们环境的kernel,可以理解为,一个kernel代表一个环境,例如上图的python3、tensorflow2.3.1。【4】
ipython是一个可交互的python解释器,该环境下的ipython能调用这个环境内的包。此时我们可以不指定版本直接安装
pip install ipython
ipykernel是一个ipython的kernel,能供jupyter调用,进而能通过jupyter使用ipython。
命令:
pip install ipykernel
有一个地方需要注意,下载 ipykernel相关依赖时,虽然这里pyzmq版本 >=13,但是我之前安装过(用conda install)的pyzmq 23.0 版本却导致我创建环境的kernel连接不上jupyter,问题就是有的包(例如jupyter-client)依赖pyzmq也许并不是>=13。我这个版本jupyter-client7.1.2我试过只有安装pyzmq24.0才能完成jupyter的连接,而23.0连接失败。【5】
该命令--name后面是你所创建虚拟环境的名字(tensorflow2.3.1),--display--name后面是你给这个环境的kernel在jupyter中显示的名字(我选择与环境名一样命名为tensorflow2.3.1)
python -m ipykernel install --user --name tensorflow2.3.1 --display-name tensorflow2.3.1
同时,通过观察上图,导入的tensorflow包import成功!
以上可以看出,在安装第三方库时,环境与各种包的依赖是最主要的问题,要想尽快的与方便的解决问题,我们可以通过创建虚拟环境隔离其他环境,让包尽可能少,冲突概率小与修改难度小。
【1】tensorflow、keras、numpy的版本兼容问题_我要改名别拦我(*^ω^*)的博客-CSDN博客
与【1】不一致的是我的pip安装numpy依赖版本显示“Collecting numpy<1.19.0,>=1.16.0”,最终下载了1.18.5最终导入包运行成功
【2】python中pip和pip3的区别、使用以及加速方法_非晚非晚的博客-CSDN博客
【3】张star:anconda的使用以及在conda环境中使用pip和conda使用安装依赖的区别和注意事项
【4】jupyter notebook 删除与增加kernel_一只tobey的博客-CSDN博客
【5】jupyter和pyzmq之间的一些个奇葩坑_ordinary_brony的博客-CSDN博客