如果你想在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
- 给新环境安装
jupyter
和notebook
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, 可以在前面的环境里(cling
或c_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
参考
- [1] Jupyter-kernels jupyter Github
- [2] xeus-cling QuantStack Github
- [3] jupyter-c-kernel brendan-rius Github
坚持写专栏不易,如果觉得本文对你有帮助,记得点个赞。感谢支持!
- 个人网站: kenblog.top
- github 站点: kenblikylee.github.io
微信扫描二维码 获取最新技术原创