首页 > 解决方案 > 在 Windows 上紧贴 Jupyter:内核无法启动

问题描述

背景:我正在尝试在这里安装 cling c++ 解释器。我在 Windows 上,并且 Anaconda 运行良好,Jupyter 笔记本也可以与现有的 Python 内核一起正常工作。安装过程表面上很顺利,但是一旦我尝试在已安装的内核上打开 Jupyter 笔记本,就会出现内核错误。

(最后我希望能够将 c++ 与 Jupyter notebook 一起使用,所以如果有人取得了任何成功,请您分享您的经验。在这一点上,虽然 xeus-cling 不能用于 Windows,但正如许多人所说,这种紧贴出现成为一个单独的东西)

安装:这是我所做的:

  1. https://root.cern.ch/download/cling/下载二进制 cling_2019-11-28_arm64.tar.bz2 (这对 Windows 是否正确?)
  2. 提取并放置在 Program Files 文件夹中
  3. 按照此处的说明,添加C:\Program Files\cling_2019-11-28_arm64\bin到 PATH 变量
  4. 激活基础 Anaconda 环境
  5. cd .../share/cling/Jupyter/kernel
  6. pip install -e .
  7. jupyter-kernelspec install --user cling-cpp11

到目前为止,一切似乎都很好,没有警告/错误。

错误:然后我加载我的 Jupyter 笔记本并尝试运行 cpp11 内核,但它无法以长错误回溯开始,其中第一个/最后一个项目显示为:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\tornado\web.py", line 1699, in _execute
    result = await result
  File "C:\ProgramData\Anaconda3\lib\site-packages\tornado\gen.py", line 736, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "C:\ProgramData\Anaconda3\lib\site-packages\notebook\services\sessions\handlers.py", line 73, in post
    type=mtype))
 ... (omitted) ...
  File "C:\ProgramData\Anaconda3\lib\site-packages\jupyter_client\launcher.py", line 138, in launch_kernel
    proc = Popen(cmd, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:\ProgramData\Anaconda3\lib\subprocess.py", line 1178, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

在 cmd 上执行以下操作:

[E 14:39:14.265 NotebookApp] Failed to run command:
    ['jupyter-cling-kernel', '-f', 'path\\to\\jupyter\\runtime\\kernel-..(random string here)..json', '--std=c++11']

故障排除 (1) : ... 似乎表明它无法找到jupyter-cling-kernel. 但是我确实在文件夹中命名jupyter-cling-kernel.../Anaconda3/Scripts文件,并且该文件夹也在我的 PATH 变量中。打开后发现是一个只有几行的python文件。看起来它对应于上面的命令。

#!C:\ProgramData\Anaconda3\python.exe
# EASY-INSTALL-DEV-SCRIPT: 'clingkernel==0.0.2','jupyter-cling-kernel'
__requires__ = 'clingkernel==0.0.2'
__import__('pkg_resources').require('clingkernel==0.0.2')
__file__ = 'C:\\Program Files\\cling_2019-11-28_arm64\\share\\cling\\Jupyter\\kernel\\scripts\\jupyter-cling-kernel'
with open(__file__) as f:
    exec(compile(f.read(), __file__, 'exec'))

所以然后我修改了我的 kernel.json 文件,添加了绝对 python 路径(以便它知道用 python 运行它)和 jupyter-cling-kernel 的绝对路径。(原来只是"argv:["jupyter-cling-kernel", "-f", ...

{
  "display_name": "C++11",
  "argv": [
      **"C:\\ProgramData\\Anaconda3\\python.exe",
      "C:\\ProgramData\\Anaconda3\\Scripts\\jupyter-cling-kernel",**
      "-f",
      "{connection_file}",
      "--std=c++11"
  ],
  "language": "C++"

}

故障排除 (2) :... 这确实似乎是正确的方向,至少它正在运行……但现在另一个错误:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\Scripts\jupyter-cling-kernel", line 7, in <modu
le>
    exec(compile(f.read(), __file__, 'exec'))
  File "C:\Program Files\cling_2019-11-28_arm64\share\cling\Jupyter\kernel\scrip
ts\jupyter-cling-kernel", line 3, in <module>
    from clingkernel import main
  File "c:\program files\cling_2019-11-28_arm64\share\cling\jupyter\kernel\cling
kernel.py", line 24, in <module>
    from fcntl import fcntl, F_GETFL, F_SETFL
ModuleNotFoundError: No module named 'fcntl'

现在通过一些谷歌搜索,这个 fcntl 似乎不适用于 Windows。所以此时我想知道我是否下载了错误的二进制文件,或者我应该修改这个 clingkernel.py 文件还是我需要自己进行一些编译?

同样,如果你们中的任何人知道如何让 Jupyter 的 c++ 运行(在 Windows 上),如果您能分享您的经验,不胜感激。谢谢。

标签: c++jupytercling

解决方案


使用 Windows 10 + WSL,我们可以在 Windows 上安装 xeus-cling for C++

步骤包括

  1. 在 WSL 上启用 Ubuntu
  2. 安装 Miniconda
  3. 设置 Conda、Jupyter Notebook、Xeus-Cling

这个带有 cpp 环境的紧贴笔记本可以从桌面快捷方式运行。步骤记录在C/C++ Jupyter Notebook 上使用 xeus-cling - Windows WSL 设置


推荐阅读