You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C++14 Jupyter Kernel启动失败求助(Cling环境,macOS)

解决Cling C++14 Jupyter Kernel启动失败的问题

从你的报错信息里,核心问题出在这一行:

whichCling = os.readlink(shutil.which('cling'))
TypeError: readlink: path should be string, bytes or os.PathLike, not NoneType

这说明Jupyter的cling内核找不到系统里的cling可执行文件——哪怕你已经把cling的bin目录加到了/etc/paths,要么是路径没真正生效,要么是路径配置错了,要么是conda环境的变量覆盖了系统PATH。

下面是一步步的排查和解决方法:

1. 确认cling命令真的能被系统找到

修改/etc/paths后,必须重启终端才能让新的路径生效(只执行echo $PATH看到路径存在不代表当前终端会话已经加载了新配置)。重启终端后执行:

which cling

如果返回空,说明路径没生效或者你加错了路径;如果返回具体的文件路径,说明cling已经能被找到,那问题可能出在conda环境的变量冲突。

2. 检查你添加的路径是否正确

你下载的cling_2018-01-11_mac1012.tar.bz2解压后,应该是一个类似cling-2018-01-11-mac1012的目录,里面的bin文件夹下才是cling可执行文件。你需要确认添加到/etc/paths的是这个bin目录的绝对路径,而不是解压后的根目录或者其他目录。

比如,如果你的cling解压在/Users/yourname/Downloads/cling-2018-01-11-mac1012,那正确的路径应该是/Users/yourname/Downloads/cling-2018-01-11-mac1012/bin

可以用这个命令验证目录里是否有cling

ls /path/to/your/cling/bin/directory

如果看不到cling文件,说明你加错了路径,重新修改/etc/paths后重启终端。

3. 直接在Kernel配置里指定cling的绝对路径

如果上面的方法都不行,你可以直接修改cling-cpp14内核的配置文件,硬编码cling的绝对路径:

  1. 找到内核配置文件的位置,一般在:
    ~/.jupyter/kernels/cling-cpp14/kernel.json
    
  2. 用编辑器打开这个文件,找到"argv"数组里的"cling",把它替换成你的cling可执行文件的绝对路径,比如:
    "argv": [
      "/Users/yourname/Downloads/cling-2018-01-11-mac1012/bin/cling",
      "--std=c++14",
      ...(后面的参数保持不变)
    ]
    
  3. 保存文件后,重启Jupyter Notebook,再尝试启动C++14内核。

4. 排查conda环境的变量冲突

因为你用的是Anaconda的Python环境,conda可能会修改PATH变量,导致系统PATH里的cling路径被覆盖。你可以在Jupyter Notebook里打开一个终端(点击New -> Terminal),然后执行:

echo $PATH
which cling

如果这里找不到cling,说明conda环境的PATH优先级更高,你可以把cling的bin目录添加到conda环境的PATH里,或者在conda的activate.d脚本里添加路径。


内容的提问来源于stack exchange,提问作者AngusTheMan

火山引擎 最新活动