前几天新建了两个虚拟环境:PyTorch,tensorflow2
我想尝试在notebook拉起的浏览器中直接操作切换虚拟环境,但后来发现并不能这么搞,所以后续尝试了不同的解决办法
方法一
一开始想到是因为在新的环境中没装notebook,连ipython内核都没有,虽然激活环境之后能用jupyter notebook拉起一个浏览器,不过在这个notebook里面只能用原来的root环境python 3
然后在anaconda首页发现对于一个新环境,好像可以直接下载后launch(完全等价于在环境里install jupyter),问题是用这种方式打开的notebook只能用这一种虚拟环境,并没有办法做到环境的切换,虽然可以但不推荐
方法二
所以又尝试在一个新的环境里尝试,通过网上查资料发现其实conda有相关管理不同环境的包nb_conda
- 首先安装nb_conda,这一步要在默认的base环境里进行(Windows可能需要管理员身份运行anaconda的shell)
conda install nb_conda
- 然后打开base环境的notebook,就会发现现在有了一个新的选项卡conda
在notebook选择环境里面有了新的选项,可以选择root和PyTorch两个环境
但是已经新建了tensorflow2环境,为什么这里面不能选它呢?
是因为在新的环境里面没有ipython,jupyter找不到对应的内核,而在之前已经在PyTorch环境中下载过jupyter了,所以已经具备了内核,故可以找到PyTorch环境而找不到tensorflow2环境
- 所以在tensorflow2环境安装
conda install ipykernel
(别直接装jupyter,可能原因我写在了后面)
- 现在从tensorflow2环境中打开notebook,也能找到他自己对应的环境了
现在可以在现有的三个环境中三选一:
这里其实我也没搞懂python 3和conda root的实际区别,希望有大老解答
自此以后,每新创建一个虚拟环境,就不用再下jupyter了,在新环境中直接打开就等效于在base中打开,如果想要找到对应新建的环境内核,只需要在新环境中安装ipykernel即可
但是再回过来看PyTorch环境,conda中对应环境打开notebook却还是只能找到唯一一个可用环境(它自己),也没有选项卡conda,造成的问题就是不能切换环境,不过在该环境底下调用自己还是完全ok的
可能conda在打开notebook的过程中会优先看你的环境中有没有独立的notebook,如果有的话就直接打开用此环境,如果没有独立的notebook但有ipython内核,就会通过base环境中的nb_conda寻找所有可用环境。
更新:
在3.9版本里面装不了nb_conda,解决途径见下
https://stackoverflow.com/questions/66359821/conda-environment-and-jupyter-notebook-python-3-9-2