Jupyter Notebook内核未被conda info -e识别的问题求助
问题梳理与解决建议
嘿,我来帮你捋清楚这个问题哈~先把你给出的命令输出整理清楚,再分析差异原因和解决办法:
1. 你执行的命令及对应输出
执行jupyter kernelspec list得到的内核列表:
python3 /opt/anaconda3/lib/python3.5/site-packages/ipykernel/resources ir /opt/anaconda3/share/jupyter/kernels/ir apache_toree_pyspark /usr/local/share/jupyter/kernels/apache_toree_pyspark apache_toree_sql /usr/local/share/jupyter/kernels/apache_toree_sql sparktest_scala /usr/local/share/jupyter/kernels/sparktest_scala
执行conda info -e得到的conda环境列表:
base * /opt/anaconda3 py35-Spark /opt/anaconda3/envs/py35-Spark
2. 为什么会出现这种差异?
其实这俩命令的作用范围本来就不一样:
conda info -e只展示由conda官方管理的虚拟环境,也就是你通过conda创建/安装的环境;- 而
jupyter kernelspec list展示的是Jupyter能识别的所有内核,除了conda环境对应的内核,还包括:- 系统级安装的内核(比如那个
ir是R内核,大概率是通过apt、CRAN这类非conda渠道装的); - Spark相关的Toree内核(
apache_toree_*系列),这类是专门用于Spark多语言交互的独立内核,和conda环境没关系; - 你自定义的Scala内核(
sparktest_scala),应该是手动添加的非conda内核。
- 系统级安装的内核(比如那个
至于你提到Notebook里仅能看到部分内核,大概率是这些非conda内核的配置存在路径问题,或者当前用户没有足够权限读取它们的配置文件。
3. 可以试试这些解决办法
把conda环境的内核加到Notebook里
如果你的py35-Spark环境没在Notebook里显示,先激活这个环境,然后安装ipykernel并注册:
conda activate py35-Spark conda install ipykernel python -m ipykernel install --user --name py35-Spark --display-name "Python 3.5 (Spark)"
重启Jupyter之后,应该就能看到这个内核选项了。
检查非conda内核的配置文件
每个Jupyter内核都有个kernel.json配置文件,路径就是kernelspec list里显示的路径。比如查看apache_toree_pyspark的配置:
cat /usr/local/share/jupyter/kernels/apache_toree_pyspark/kernel.json
重点看argv字段里的执行路径,确认Spark、Python这些工具的路径是否正确,有没有和你的系统环境冲突。
修复内核目录的权限
如果是权限问题导致Notebook读不到内核,先检查目录权限:
ls -l /usr/local/share/jupyter/kernels/
要是当前用户没有读取权限,就调整一下:
sudo chmod -R 755 /usr/local/share/jupyter/kernels/
重启Jupyter应该就能看到这些内核了。
内容的提问来源于stack exchange,提问作者wwjdm
相关产品推荐
相关产品推荐

