在pycharm中运行sagemath脚本的配置过程

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语法的脚本了。

给一个测试脚本供大家测试配置结果,运行该脚本可得文章开头的效果。

python 复制代码
#!/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------

相关推荐
2301_764441332 分钟前
Python管理咨询数据可视化实战:收入分布与顾问利用率双轴对比图表生成脚本
开发语言·python·信息可视化
该用户已不存在21 分钟前
不知道这些工具,难怪的你的Python开发那么慢丨Python 开发必备的6大工具
前端·后端·python
Monkey的自我迭代1 小时前
Python标准库:时间与随机数全解析
前端·python·数据挖掘
SsummerC2 小时前
【leetcode100】下一个排列
python·算法·leetcode
Kelaru2 小时前
本地Qwen中医问诊小程序系统开发
python·ai·小程序·flask·project
Menger_Wen2 小时前
分析新旧因子相关性
python·机器学习·区块链
wt_cs3 小时前
身份证识别api-便捷生活与安全社会的双重保障
安全·生活
RAY_01043 小时前
Python—数据容器
开发语言·python
June bug3 小时前
【python基础】python和pycharm的下载与安装
开发语言·python·pycharm
im_AMBER4 小时前
python实践思路(草拟计划+方法)
开发语言·python