作为Python的一个依赖管理工具,Anaconda实现了Pip「全局安装」和virtualenv「本地安装」的折衷,它使用「按名访问」的方式实现环境的隔离,使使用者能够灵活的隔离和共享环境。
然而要使用Anaconda+Jupyter+VSCode这一套组合拳可有不少坑。
按照常识,在一个conda环境下安装Jupyter
后应该可以直接访问对应环境下的包
|
|
在VSCode中选择名为test
的conda环境,新建Jupyter notebook,执行
提示找不到torch这个包
而从直接运行Python解释器却一切正常
在notebook中执行
发现Jupyter notebook使用了默认conda环境中的python作为kernel
要解决这个问题,需要将test
环境下的python暴露出来。
执行
安装完成后重新打开VSCode,在运行Jupyter notebook中的代码之前,在右上角的Select Kernel中切换到test
中的Kernel,即可成功导入Pytorch。
原因分析:
VSCode中的Python扩展在打开.ipynb
文件时使用的是base
环境中的Jupyter,这样当然找不到test
环境中的pytorch了。而在安装了nb_conda_kernels后,test
环境中的ipykernel向base
中的Jupyter报告了kernel spec,从而使得base
中的Jupyter可以顺利的使用test
中的ipykernel执行代码。而test
中的ipykernel自然可以访问同在test
下的pytorch了。更多请参见nb_conda_kernels的说明。