作者: Mengce Zheng
日期: 2024年12月15日
本文为 SageMath 多版本内核配置指南 - WSL2 + VSCode 集成,在 WSL2 Ubuntu 已安装 SageMath 9.5 的情况下,说明如何在 VSCode 中配置使用虚拟环境中的 SageMath 10.3 。
环境准备
系统环境
- 操作系统: Windows 10 + WSL2 (Ubuntu 22.04)
- 工具链:
- VSCode 扩展:
Remote - WSL
,Python
,Jupyter
- 包管理器:
miniconda3
,miniforge3
- VSCode 扩展:
软件版本
名称 | 版本 | 安装位置 |
---|---|---|
SageMath | 9.5 | 系统全局 (/usr/bin ) |
SageMath | 10.3 | miniforge 虚拟环境 |
Jupyter Client | ≥7.0 | 虚拟环境 |
旧版 SageMath 9.5 全局配置
内核信息
1
2
3
4
5
6
7
8
# 进入虚拟环境
mamba activate sage-dev
# 查看内核文件
jupyter kernelspec list
# 验证路径
ls /usr/share/jupyter/kernels/sagemath/kernel.json
文件内容
1
2
3
4
5
6
// cat /usr/share/jupyter/kernels/sagemath/kernel.json
{
"argv": ["/usr/bin/sage", "--python", "-m", "sage.repl.ipython_kernel", "-f", "{connection_file}"],
"display_name": "SageMath",
"language": "sage"
}
新版 SageMath 10.3 虚拟环境配置
步骤概览
-
创建虚拟环境: 详见 SageMath 10.3
-
内核注册:
1 2
mamba activate sage-dev mkdir -p $CONDA_PREFIX/share/jupyter/kernels/sagemath10.3
-
编写内核配置:
1 2 3 4 5 6 7
cat << EOF > $CONDA_PREFIX/share/jupyter/kernels/sagemath10.3/kernel.json { "argv": ["$CONDA_PREFIX/bin/python", "-m", "sage.repl.ipython_kernel", "-f", "{connection_file}"], "display_name": "SageMath 10.3", "language": "sage" } EOF
-
注册到 Jupyter:
1
jupyter kernelspec install $CONDA_PREFIX/share/jupyter/kernels/sagemath10.3 --user --name "sagemath10.3"
内核冲突解决
关键操作
问题描述 | 解决命令 |
---|---|
路径冲突 | mv /usr/share/jupyter/kernels/sagemath /usr/share/jupyter/kernels/sagemath9.5 |
环境变量覆盖 | 在 kernel.json 中显式指定虚拟环境的 Python 路径 |
内核命名优化
修改显示
-
旧版内核:
1 2
sudo nano /usr/share/jupyter/kernels/sagemath9.5/kernel.json # 修改 "display_name": "SageMath 9.5"
-
新版内核:
1 2
nano $CONDA_PREFIX/share/jupyter/kernels/sagemath10.3/kernel.json # 修改 "display_name": "SageMath 10.3"
最终效果
1
2
3
4
5
6
mamba activate sage-dev
jupyter kernelspec list
Available kernels:
python3 /home/user/miniforge3/envs/sage-dev/share/jupyter/kernels/python3
sagemath10.3 /home/user/miniforge3/envs/sage-dev/share/jupyter/kernels/sagemath10.3
sagemath9.5 /usr/share/jupyter/kernels/sagemath9.5
验证与测试
测试代码
1
2
3
4
5
6
# 版本验证
print(f"SageMath Version: {sage.version.version}")
# 功能验证
print(f"ceil(3.14) = {ceil(3.14)}") # 应输出 4
print(f"factor(10) = {factor(10)}") # 应输出 2 * 5
预期输出
内核名称 | sage.version.version |
ceil(3.14) |
---|---|---|
SageMath 9.5 | 9.5 | 4 |
SageMath 10.3 | 10.3 | 4 |
通过本指南,可实现在单一 Jupyter 环境中管理多版本 SageMath 内核,并保持环境隔离性和命名简洁性。本文撰写过程中参考 DeepSeek 提供的建议与方案。