问题描述
在服务器中,存在多个conda环境,使用不同环境时,jupyter中的python解释器无法正常切换。使用命令查看python解释器路径时,会发现cmd下进入的python与Notebook中Kernel所使用的python路径不一致。
举例说明,存在两个环境nlp和torch18。首先,在服务器命令行下激活nlp环境并运行jupyter lab
>> conda activate nlp
>> jupyter lab --no-browser
然后,使用浏览器远程连接这个jupyter,查看python解释器的路径
import sys
print( sys.executable)
显示结果为
/home/jxqi/anaconda3/envs/nlp/bin/python
可以看到,它是使用的nlp环境下的python解释器。
接着,关闭这个jupyter,切换到torch18环境并运行jupyter lab
>> conda activate torch18
>> jupyter lab --no-browser
然后,使用浏览器远程连接这个jupyter,查看python解释器的路径
import sys
print( sys.executable)
显示结果为
/home/jxqi/anaconda3/envs/nlp/bin/python
可以看到,它还是使用的nlp环境下的python解释器。
而我们理想的情况是它应当自动切换为了torch18环境下的解释器。这里并没有自动切换,就会导致我们在torch18环境下安装的包无法正常导入。而在命令行中运行python时,是可以正常导入。
解决方法
方法一:删除jupyter内核的配置文件
遇到这个问题后,在与其他同学讨论时发现他的jupyter的配置文件中并没有kernel的配置文件。而他的jupyter则是可以正常的自动切换相应环境下的解释器。于是,我便尝试了直接删除我的目录下的kernel配置文件,之后重启jupyter lab,问题解决。
kernel配置文件路径如下:
首先使用命令查找python3的kernel配置文件路径
>> ipython kernelspec list
显示
Available kernels:
python3 /home/jxqi/.local/share/jupyter/kernels/python3
python2 /home/jxqi/.local/share/jupyter/kernels/python2
之后进入到这个这个目录下,直接将python3这个文件夹删除即可。亲测有效。
方法二:添加python conda 环境的kernel
这个方法主要参考:给 jupyter-notebook 添加python conda 环境的kernel | 正确实用 | 简记这篇博客。
首先激活torch18环境,安装ipykernel。
>> conda activate torch18
>> conda install ipykernel
然后将环境写入到jupyter
>> python -m ipykernel install --user --name torch18 --display-name "torch18"
最后重启jupyter lab,就可以在菜单栏的kernel中进行切换。不过这样每次都需要手动切换,感觉比较麻烦。所以还是推荐第一种方式,直接删除掉配置文件,简单粗暴有效。
参考
- 给 jupyter-notebook 添加python conda 环境的kernel | 正确实用 | 简记,https://blog.csdn.net/sinat_28442665/article/details/86601015