【问题标题】:cling on Jupyter on Windows: Kernel cannot start在 Windows 上紧贴 Jupyter:内核无法启动
【发布时间】:2020-03-24 20:21:53
【问题描述】:

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

(最后我希望能够将 c++ 与 Jupyter notebook 一起使用,所以如果有人有任何成功,请您分享您的经验。关于这一点,虽然 xeus-cling 不能用于 Windows,但正如许多人所说,这种粘着似乎是一个单独的东西)

安装:这是我所做的:

  1. 从以下位置下载二进制文件 cling_2019-11-28_arm64.tar.bz2 (这对 Windows 是否正确?) https://root.cern.ch/download/cling/
  2. 解压并放在 Program Files 文件夹中
  3. 按照here 中的说明,将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。但我确实在.../Anaconda3/Scripts 文件夹中有名为jupyter-cling-kernel 的文件,并且该文件夹也在我的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 上),如果您能分享您的经验,不胜感激。谢谢。

【问题讨论】:

  • 如果你不在 arm64 上运行 windows,你确实有错误的二进制文件。您可能正在寻找 x86 或 amd64
  • 谢谢,也许我把 arm64 和 amd64 混为一谈,以为它适用于 Windows,所以看起来唯一的选择就是自己构建。
  • 请注意:构建需要几个小时,大约 30-40GB 磁盘空间,并且在 2017 年中期的 github 上的一个问题中,有人提到由于 python 包装器,jupyter 内核无法在 Windows 上运行.如果我是你,我会尝试新的 linux 子系统或 VM :)
  • 幸运的是,我看到了你的注释,我的 C 上真的只有 40 GB。在 linux VM 上,这是否意味着我需要为 Linux 重新编译所有库。 (也意味着额外的编译时间和双倍的磁盘空间?)
  • 不知道你的具体情况,我只能说是,除非有可用的二进制文件。

标签: c++ jupyter cling


【解决方案1】:

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

步骤包括

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

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

【讨论】:

  • 是的,行得通!
【解决方案2】:

cling 解释器已为 conda-forge 打包。

你可以简单地运行

conda install cling -c conda-forge

然后运行cling。然而,不幸的是,Jupyter 内核不包含在该构建中,并且 Windows 构建存在一些我目前正在调查的 IO 操作问题。

【讨论】:

  • 对不起,我看到你的答案晚了。事实上,我也运行了那个命令,这给了我一个紧贴程序(它确实有效)。不幸的是,正如您指出的那样,这不会给我 Jupyter 内核。仍然感谢您提供的信息,实际上我已经放弃在 Windows 上构建它。
  • 可以使用 conda install xeus-cling -c conda-forge 安装用于 cling 的 xeus-cling jupyter 内核。
  • 另外,在 windows 上打包 cling 和 xeus-cling 唯一剩下的问题是这个:github.com/root-project/cling/issues/300。如果您对如何修复它有任何想法,我们将非常欢迎您提供帮助。
【解决方案3】:

也许尝试按两次 o(not 0) 来重新启动内核。

【讨论】:

  • 您能否提及这对您的回答有何帮助/作用?
猜你喜欢
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 2022-11-02
  • 1970-01-01
  • 2021-02-13
  • 2022-01-27
相关资源
最近更新 更多