sagemath是免费、开源的数学软件,支持代数、几何、数论、密码学、数值计算和相关领域的研究和教学,是密码学的学习和ctf中crypto题目中不可或缺的重要工具,如果能将其指令直接用于python脚本的编写,无疑能够极大方便我们的学习和工作。但由于sage基于unix内核,其内部集成的python解释器中与操作系统有关的指令集均不适配windows,这注定我们的配置不会太简单。下面展开介绍。
免责声明:笔者仅保证文章中无恶意操作,若因个人操作不当导致数据丢失、环境受损等,造成损失由操作者本人承担。
要完成本文配置,需要提前准备的:
1、Pycharm Pro授权(仅Pro版本支持使用远程(虚拟机、子系统)的python解释器,本文不涉及破解)
2、运行 Windows 10...
- 对于 x64 系统:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
- 对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。
或 Windows 11的计算机。
3、良好的,能正常使用Github和微软商店的网络环境。
4、足够的细致与耐心(基于网络环境不同,整套下载与配置流程可能长达0.5-3小时,可能需要多次重启)。
一、下载wsl
适用于 Linux 的 Windows 子系统(WSL)是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。
通过wsl,我们可以便捷地在windows上安装linux发行版的子系统,在子系统上安装sage,从而可以便捷调用子系统sage中集成的python解释器。
我们用管理员权限打开powershell(直接搜索powershell,右键,管理员身份打开)
输入以下指令,运行完成后重启
(启用windows中“适用于 Linux 的 Windows 子系统”可选功能、启用 虚拟机平台 可选功能。这是安装wsl的前提。)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
显示上方操作成功后,我们重启电脑。
重启完了吗,欢迎回来!我们再次管理员身份打开powershell。
我们现在安装wsl,键入以下指令,这里需要下载一段时间,且微软服务器经常抽风,需要耐心等待。
wsl.exe --install
安装完成后,我们将默认版本切换为wsl2
wsl --set-default-version 2
到这里,wsl算是成功安装,也完成了基础配置。如果上述操作遇到困难,可以参考下面的官方链接尝试解决,欢迎在评论区留言。
安装 WSL | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/install
二、安装Ubuntu和Sagemath
完成wsl的安装和配置后,我们可以着手安装子系统和子系统内部的Sagemath了
安装ubuntu有多种方式,第一种是官方建议方式,但微软商店日常抽风,我没弄成。可以试试,不行的话和我一样用第二种。
①开启微软商店,搜索ubuntu,点击下载
②手动下载ubuntu安装包,下面是直链https://aka.ms/wslubuntu2204https://aka.ms/wslubuntu2204
下载完长这样,直接双击无脑下一步傻瓜式安装即可。
安装完成后点击“打开”,第一次启动ubuntu会让你设置用户名密码,密码要输入两次,密码输入是不回显的,输入完回车就好了。这里我配置过了,设置密码这步就不演示了。
完成ubuntu安装后,我们安装sagemath
我们打开管理员的powershell,输入wsl进入ubuntu,更新apt,安装sagemath。
(这一步更是重量级,基于网络环境,可能也要等上很久)
wsl
sudo apt update
sudo apt install -y sagemath
安装完成后,这一步也完满结束辽~
三、配置sagemath的venv,在pycham中使用该解释器
接下来就是纯配置过程,不需要下载的等待,但需要细心的操作。
我们在上一步的窗口中输入下列指令,创建sagemath的python解释器的venv,防止污染正式环境。
sudo apt install -y python3-venv python3-pip
mkdir ~/my_sage_project
cd ~/my_sage_project
sage --python -m venv .venv
source .venv/bin/activate
运行完上方指令后,我们创建了虚拟环境,接下来可以关闭powershell,打开pycharm pro,我们添加该解释器。
我们打开解释器设置,点击右边的添加解释器,下拉框有“wsl”(只有pycharm pro有)
等它显示“内省成功完成”,点击下一步。
位置可以默认,下方基础解释器参考我的路径找一下,如果你上面的操作和我一致,路径应该只有用户名不一样,很好找,勾选上下方的框框,点击创建即可。
这样出来后,我们会发现这个环境有一大堆的软件包,其中包括了我们需要的sage,用这个解释器,我们可以正常跑sage语法的脚本了。
给一个测试脚本供大家测试配置结果,运行该脚本可得文章开头的效果。
#!/usr/bin/env sage -python
# -*- coding: utf-8 -*-
from sage.all import *
def main():
print("Hello, Sage!")
# 1) 算术:阶乘
print("10! =", factorial(10))
# 2) 符号解方程
x = var('x')
sol = solve(x**2 + 3*x + 2 == 0, x)
print("解 x**2+3x+2=0 →", sol)
# 3) 素数测试 & 列表生成
print("37 是素数吗?", is_prime(37))
primes_upto_30 = list(primes(30))
print("30 以内的素数:", primes_upto_30)
# 4) 椭圆曲线
E = EllipticCurve([0, -1, 1, -10, -20]) # y**2 + y = x**3 -10x -20
print("椭圆曲线 E:", E)
print(" E.rank() =", E.rank())
print(" E.torsion_subgroup() =", E.torsion_subgroup())
# 5) 矩阵运算
M = matrix([[1,2,3],[0,1,4],[5,6,0]])
print("矩阵 M:\n", M)
print(" det(M) =", M.det())
print(" M⁻¹ =\n", M.inverse())
# 6) 简单绘图
try:
f = plot(lambda t: sin(t), 0, pi)
fname = 'sin_plot.png'
f.save(fname)
print("已生成绘图 sin_plot.png")
except Exception as e:
print("绘图失败:", e)
if __name__ == '__main__':
main()
——END——