wsl上部署sagemath
介绍
SageMath 是一个开源的数学软件系统,内部整合了 NumPy、SciPy、Maxima、GAP 等数百个数学包,常用于处理密码学大数分解、椭圆曲线以及高等数学中的符号微积分和矩阵推导。
为何不建议直接在本地windows安装?
- 运行机制臃肿:SageMath 核心依赖类 Unix 环境,Windows 原生版本实际上是捆绑了一个庞大的 Cygwin 模拟层,导致安装包体积达到数 GB,且运行效率存在明显折损。
- 生态集成困难:原生 Windows 版相对封闭,难以与现有的命令行工具链(如 Git、系统级 Python 脚本等)顺畅集成。
通过 Windows Subsystem for Linux (WSL) 运行原生的 Ubuntu 环境,可以无损调用 Linux 的执行效率,并与 Windows 宿主机文件系统互通。
基于 Conda 的部署
在 Ubuntu 下不使用自带的 apt 安装或源码编译的原因:
apt软件源中的 SageMath 版本通常严重滞后。- 源码编译需要手动解决数以百计的 C/C++ 和 Fortran 库依赖,耗时极长且容易因缺少系统级头文件而失败。
利用 Conda(推荐使用轻量级的 Miniforge)可以直接拉取 conda-forge 社区预编译的完整二进制包,免去编译过程并实现环境隔离。
部署步骤:
- 下载并安装 Miniforge:
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"bash Miniforge3-$(uname)-$(uname -m).sh

按下回车键
输入yes
安装过程中按提示确认,完成后执行以下命令初始化环境变量:
source ~/.bashrc创建并激活 SageMath 独立环境(以 Python 3.12 为例):
conda create -n sage sage python=3.12conda activate sage
当终端提示符前出现 (sage) 时,即表示部署完成。直接输入 sage 即可进入交互环境
日常使用
在 WSL 中启动后,由于禁用了 base 环境自动激活,需手动进入 Sage 环境。
# 1. 激活 Sage 环境conda activate sage
# 2. 检查环境状态(可选,确认左侧出现 (sage))conda info --envs交互式命令行
# 启动交互式终端sage
# 示例操作 (进入 sage: 提示符后)# factor(2^128 - 1)# exit() (退出)适用于临时的数学计算、大数分解或验证某个公式。
- 进入环境:
conda activate sage - 启动:输入
sage - 操作:在
sage:提示符后输入数学表达式。- 例如:
factor(2^128 - 1)
- 例如:
- 退出:输入
exit或按Ctrl + D。
终端编辑
使用 Nano
-
新建/打开文件:输入
nano solve.py。 -
编辑内容:在编辑器中输入代码。注意必须引入 Sage 库:
from sage.all import *# 这里写逻辑,例如:print(is_prime(2**31 - 1)) -
保存:按
Ctrl + O,然后按Enter确认文件名。 -
退出:按
Ctrl + X。 -
运行:在终端输入
sage solve.py。
关于conda
Conda 常用指令
conda list:查看当前环境安装了哪些包。conda install <package>:在当前环境安装新工具(如requests)。conda env remove -n sage:删除整个 sage 环境。
关于关闭“自动激活 base 环境”
命令:conda config --set auto_activate_base false
- 利:保持系统纯净。WSL 启动时不会抢占系统路径,避免 Conda 的库与你进行的
xv6或 C 语言底层实验产生冲突。 - 弊:增加操作成本。每次使用 Sage 必须手动
conda activate sage,否则系统找不到sage命令。 - 不关闭的影响:终端始终显示
(base),系统优先使用 Conda 提供的 Python,这可能导致你在编译一些依赖特定系统库的 C/C++ 项目时报错。
结语
我在windows和Ubuntu虚拟机还有wsl上都部署过sagemath,因为我本人不是crypto方向的,windows上因为只能使用老版本的限制很大,Ubuntu虚拟机放着就占我20多G,kali部署太复杂容易崩溃导致每次用完我就删,觉得以后不会用的,今天打suctf的时候一道ai安全又要用到,决定还是在wsl部署一个备用,这样占用少,操作简单,启动快,我认为是在windows电脑上最佳的方法
还有本篇博客的内容几乎都是ai写的,所以ai师傅放一作,感谢ai师傅让我蹭一个二作orz
部分信息可能已经过时









