Jupyter Notebook 默认不能直接运行 C++,因为它仅内置 Python、R、Julia 等语言的官方内核,而 C++ 无原生 kernel,故 %%cpp 或 int main() 会报 NameError 或语法错误。

为什么 Jupyter Notebook 默认不能直接运行 C++
Jupyter Notebook 本身只支持通过内核(kernel)执行代码,而官方内核只提供 Python、R、Julia 等语言;C++ 没有原生 kernel,所以 %%cpp 或直接写 int main() 会报错 NameError: name 'cpp' is not defined 或触发语法错误。
用 xeus-cling 安装 C++ 内核(推荐方案)
xeus-cling 是目前最稳定、维护活跃的 C++ Jupyter 内核,基于 LLVM Clang,支持 C++14/17,能交互式执行表达式、定义变量、调用 STL,且无需手动编译链接。
- 先确保系统有 conda(推荐 miniconda),然后运行:
conda install -c conda-forge xeus-cling
- 安装后执行:
jupyter kernelspec list
,确认输出中包含xeus-cling - 启动 notebook 后,在 kernel 菜单里选择
Xeus C++17(或类似名称),就能直接写std::cout << "Hello"; - 注意:Windows 用户建议用 WSL2 或 Anaconda Prompt 运行,cmd/powershell 可能因路径问题加载失败
用 %%cpp 魔法命令临时编译(轻量替代)
如果你只是偶尔跑几段 C++,不想装新内核,可用 ipython-cpp 或更通用的 g++ + subprocess 方案,但需提前配置好系统级编译器。
- 先安装 C++ 编译器:
g++(Linux/macOS)或 MinGW-w64(Windows) - 在 notebook 单元格开头加:
%%bash echo '#include <iostream> int main(){std::cout<<"OK";}' > test.cpp && g++ test.cpp -o test && ./test - 更安全的做法是用
%%writefile+!g++分步,避免 shell 注入风险 - 缺点:不支持变量跨单元格共享,每次都是独立进程,无法调试或查看内存状态
常见报错和绕过方法
装了 xeus-cling 却启动失败?大概率是内核注册损坏或 Python 环境混用。
立即学习“C++免费学习笔记(深入)”;
- 错误信息
Failed to load kernel spec:运行jupyter kernelspec uninstall xeus-cling
再重装 - 内核挂起无响应:检查是否在非 conda 环境下 pip 安装了 xeus-cling(必须用 conda-forge channel)
-
#include <vector>报错:默认 C++ 标准可能是 11,加一行using namespace std;或显式写std::vector - 中文输出乱码(Windows):xeus-cling 在 cmd 下不支持 UTF-8,改用 Windows Terminal 或 VS Code 的 Jupyter 插件
真正麻烦的是调试——xeus-cling 不支持断点和 step-in,复杂逻辑还是得回 IDE 编译运行。内核只是“能跑”,不是“好调”。


















