不使用Jupyternotebook在VScode中轻松运行sage文件
不使用Jupyternotebook在VScode中轻松运行sage文件
PH Gao前言
公钥实验要求使用sagemath来进行一些算法的编写
目前,编写sage程序并运行主要有以下方式:
- 使用Linux运行
- 使用实体机运行
- 首先apt安装sage
- 编写代码
- 使用命令 ‘sage filename’ 运行
- 使用虚拟机运行
- 同上
- 使用wsl运行
- 同上
- 使用实体机运行
- 使用Windows运行
- 安装sage软件
- 使用jupyternotebook在浏览器编辑运行
无论是那种方法,在运行时要么前置步骤复杂(jupyternotebook),要么运行时要输指令。不能说十分麻烦,但就是不爽。
令人不爽的事情 一定要被解决!
效果
通过搜索和摸索我找到了一套如运行python一样简单的运行sage程序的方法,还有代码 高亮 ,先看看效果:
- 打开VScode新建.sage文件
- 写完后使用快捷键Ctrl+Alt+n运行sage文件
- Ctrl+c可以中断代码运行
是不是非常简单?非常舒适?非常爽?
接下来讲解配置方法
配置
安装wsl
首先开启Windows的wsl功能,在搜索栏中搜索‘启用或关闭windows功能’
然后打开Hyper-V, 适用于Linux的Windows子系统,虚拟机平台三项功能,注意Hyper-V功能只有专业版才有,家庭版没有,一般不会影响后续的wsl安装,但是如果影响了,请跟着下面的步骤手动安装Hyper-V:
新建txt文档hyper_v.txt,复制以下脚本到里面,然后保存退出后将文件后缀名改为.bat然后右键使用管理员权限打开,等待Hyper-V安装完成后重启电脑
1 | pushd "%~dp0" |
然后在需要安装的文件夹打开powershell,输入以下命令:
1 | Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile Ubuntu20.04.appx -UseBasicParsing |
文件有4个多g,多安装一会也正常
然后依次执行下面四条命令:
1 | Rename-Item .\Ubuntu20.04.appx Ubuntu.zip |
第一次安装会让你输入用户名和密码,输入即可
最后可以在powershell输入以下命令查看wsl版本:
1 | wsl -l -v |
由于国内种种不可抗拒因素,自带的软件源很慢,所以要换软件源,一般换成清华源。另外,wsl的Ubuntu证书是过期的,如果你想手动还源的话请记得先更新证书
使用大佬写好的脚本直接换源(wsl中执行):
1 | wget https://gitee.com/lin-xi-269/tools/raw/master/os/QHubuntu20.04 && bash QHubuntu20.04 |
换完源后记得删掉换源脚本,以防哪次不小心运行了:
然后输入
1 | sudo apt-get update |
就可以更新软件源了
注意,在这一步我遇到了无法正确更新软件源的问题,原因是wsl的Ubuntu的证书过期了,需要手动更新证书。或者如果你像我一样懒,而且使用wsl没有安全的需求,就直接将软件源里面的https都改成http也能更新软件源,在/etc/apt/sources.list中修改
安装sagemath
wsl中输入命令:
1 | sudo apt-get install sagemath sagemath-doc sagemath-jupyter |
等待安装好就行了
在wsl中输入sage就可以运行sagemath:
但是咱们的目标不是在这儿运行sage,而是在VScode中运行sage,所以继续
连接VScode
安装wsl插件,直接在VScode的Extensions中搜索wsl,安装即可
可以试试左下角的wsl按钮,点击后点击 ‘Connected to wsl’ 再打开终端会打开wsl的终端。首次连接会下载服务器,等一会就行了
到这里,wsl和VScode的连接就完成了
安装插件实现快捷键运行sage文件
教程参考:网页链接
直接运行
现在编辑运行sage文件其实已经够轻松了,直接创建sage文件,编辑结束后再终端中输入
1 | wsl sage filename |
就可以运行了:
但是还要我输命令,真不爽,所以我找到了一个插件,可以实现快捷键运行sage文件
快捷键运行
安装插件:Code Runner
这个插件的作用是可以在VScode中运行各种语言的文件,原理是检测后缀名来判断文件,然后输入相应文件的运行命令到终端。而这个插件自己是没有sage的运行命令的,所以我们要自己添加:
Ctrl+Shift+P,打开用户设置(Open User Settings),搜索Code-runner找到对应配置,Executor Map 和 Executor Map By File Extension,把两个 ‘在settings.json中编辑’ 都点了,就会在settings.json生成相关代码 然后在settings.json中编辑
进行配置:
1 | "code-runner.executorMapByFileExtension": { |
解释一下在干嘛:上面的是根据.sage来判断是sage文件,然后使用相关命令。下面为了不和python冲突,所以把python的命令设置为null
终端中运行
Code Runner默认在OUTPUT中运行对应文件,结束后再输出出来,很蠢,令人不爽,在Code Runner的设置中修改:
有个 ‘在运行前保存’ 也建议加上,方便我这样的懒人
然后就可以使用快捷键运行sage文件了,快捷键是Ctrl+Alt+n
想要中断运行就Ctrl+c就行了
一些收尾
sage代码高亮
现在sage代码能狗运行了,但是没有代码高亮,由于sage基于python,我们把sage文件的代码高亮设置为python就行了
由于识别为python文件,sage中有些python没有的语法会被识别为错误,但是不影响运行
在settings.json中加上这一段:
1 | "files.associations": { |
记得在settings.json中加入新的配置之前要在前面加上逗号
.sage.py文件隐藏
每次运行都会产生一个*.sage.py文件,这个文件是sage运行时产生的,看着不爽。
我们可以在settings.json中设置隐藏这个文件:
1 | "files.exclude": { |
至此就全部完成了sage在VScode上的配置了
结语
爽多了