jupyter notebook 安装 C/C++ kernel

5,255 阅读4分钟

如果你想在jupyter notebook中交互式编写C以及C++,那么本文是为你而写^_^

1. 准备工作

为了减少安装过程中不必要的烦恼,影响你美美的心情,请确保目标机器上已经安装了Anaconda,下载地址:www.anaconda.com/distributio…。如已安装,请跳过。

2. 安装环境

以下列举环境是经过实践检验的环境,仅供参考,并非要求严格一致。

2.1 Linux

  • CentOS Linux release 7.4.1708 (Core)
  • Anaconda3
  • conda 4.6.11

2.2 macOS

  • macOS Mojave 10.14.4
  • Anaconda3
  • conda 4.6.14

注:windows目前还未得到较好支持

3. 开始安装

C语言和C++由不同kernel支持,两者没有依赖关系,因此可以根据需要只安装其中一个,或两个都安装,但推荐安装C++ kernel,这是主流的kernel,由更加专业的团队维护的项目,C kernel是由个人开发者维护的小型项目,实现较为简单,但如果想快速体验在jupyter notebook运行C,也是不错的选择。如果想了解更多jupyter支持的kernel,可以参考github.com/jupyter/jup…

3.1 安装C++ kernel (xeus-cling)


  • 创建新的虚拟环境,命名为cling,或者你喜欢的其他名称,比如,如果你想在此环境安装C++和C Kernel,可以取名为c_cpp
conda create -n cling
  • 切换到新创建的虚拟环境
conda activate cling
  • 给新环境安装jupyternotebook
conda install jupyter notebook
  • 使用conda-forge镜像channel安装xeus-cling
conda install xeus-cling -c conda-forge
  • 检查是否成功安装了kernel
jupyter kernelspec list

正确安装,会显示以下四个kernel:

python3 /anaconda3/envs/cling/share/jupyter/kernels/python3

xcpp11 /anaconda3/envs/cling/share/jupyter/kernels/xcpp11

xcpp14 /anaconda3/envs/cling/share/jupyter/kernels/xcpp14

xcpp17 /anaconda3/envs/cling/share/jupyter/kernels/xcpp17

  • 打开notebook
jupyter notebook

在新建下拉菜单里可以看到看到上面的四个kernel,选择C++ 11:

将以下c++代码复制黏贴到cell中,按下shift+enter,运行C++代码,enjoy it!:

#include <iostream>

std::cout << "Hello world!" << std::endl;

补充:快捷安装

如果你不想一步步看完,或者你和我一样是个急性子的人,想一步到位,那么可以使用以下方法,一步搞定:

  • 新建文件,命名为cling.yml, 将以下内容复制黏贴到cling.yml中:
name: cling
channels:
    - conda-forge
    - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
    - defaults
dependencies:
    - python=3
    - pip=19.2.1
    - jupyter
    - notebook
    - xeus-cling=0.7.1
  • 通过yml文件创建虚拟环境
conda env create -f cling.yml

没错只需两步,你已经完成和前面等效的环境创建,此方法推荐用于二次安装相同环境,本质是导出了上述环境,如果是首次安装,建议尝试一步步来的安装方式,更能加深对kernel工作机制的理解,以便以后安装其他语言的kernel。

3.2 安装C kernel (jupyter-c-kernel)

目前官方列举的第三方提供的C kernel,支持的比较好的是jupyter-c-kernel,在没有更好的C kernel出来前,这是一个不错选择。如果你熟悉了C++ Kernel的安装,那么安装jupyter-c-kernel也是大同小异,因此就不一一列举步骤,而是将所有安装命令汇总在一起:

3.2.1 创建新的虚拟环境安装

如果你想单独在一个新的环境安装C kernel, 可以使用如下命令(可将全部复制到一个shell脚本中,在命令行运行, 或一行行运行):

conda create -n clang
conda activate clang
conda install jupyter notebook
pip install jupyter-c-kernel
install_c_kernel
jupyter kernelspec list
jupyter notebook

3.2.2 在已有的虚拟环境安装

如果你不想重复安装jupyter, 可以在前面的环境里(clingc_cpp),直接使用pip安装jupyter-c-kernel:

pip install jupyter-c-kernel

需要注意的是,不同于xeus-cling在使用conda安装后,就可以通过命令jupyter kernelspec list查看到,使用pip安装jupyter-c-kernel后,会在当前环境可执行程序路径生成一个可运行命令install_c_kernel,需要再单独运行此命令install_c_kernel, 当然一般都已自动添加到环境变量里,因此可以直接运行。(细心的同学,应该注意到在上一小节也运行了这个命令)

install_c_kernel
#  查看已安装kernel
jupyter kernelspec list

再次打开jupyter notebook, 如下:

选择C,新建notebook, 将以下C代码复制到cell:

#include <stdio.h>

int main () {
    printf("Hello world!\n");
    return 0;
}

运行C代码, enjoy it!:

汇总

如果你想像3.1中使用‘yml’文件一次安装两个kernel,只要在3.1的文件上基础稍加改动,如下:

name: c_cpp
channels:
    - conda-forge
    - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
    - defaults
dependencies:
    - python=3
    - pip=19.2.1
    - jupyter
    - notebook
    - xeus-cling=0.7.1
    - pip:
        - jupyter-c-kernel==1.2.2

复制黏贴到文件c_cpp.yml, 并在c_cpp.yml相同目录下运行如下命令:

conda env create -f c_cpp.yml
conda activate c_cpp
install_c_kernel
jupyter kernelspec list

参考


坚持写专栏不易,如果觉得本文对你有帮助,记得点个赞。感谢支持!


微信扫描二维码 获取最新技术原创