今天想用vscode使用sagemath,配置方法如下:
下载sagemath
windows端下载sagemath的链接如下
Releases · sagemath/sage-windowsgithub.com
vscode里使用jupyternotebook
安装最常用的那个python扩展,注意它已经是集成了jupyternotebook,不需要额外安装jupyter扩展。

此时在文件夹里新建一个.ipynb文件,打开它就是jupyternotebook的界面了

(以上步骤是在vscode里用jupyternotebook,这个网上已经有很多教程了,如果觉得我这里写的不够详细的话可以看网上的相关教程)
但此时server调用的不是sagemath的server。我们还需要更改server。
使用sagemath server
打开SageMath 9.1 Notebook

会弹出如下命令行界面,并弹出浏览器

我们把浏览器关掉(毕竟这里是在用vscode写代码),然后复制上图红框圈出的URL。切回到vscode,点击下图红框(Jupyter Server那个位置)

然后会弹出下图所示的框,点击Exisiting

如下图那样把刚才复制的URL粘贴进去

回车以后,重启(reload) vscode

使用sage kernel
重启后如下图所示。下图的蓝框显示的应该是刚才的url。如果是这样说明server加载成功。

现在点击上图红框(Python3那个位置)。稍后会弹出一个框,在弹出的框中选择SageMath 9.1,然后等待kernel被切换到sagemath

当发现下图蓝框的位置是SageMath9.1时,就说明切换成功了。

测试
现在vscode+jupyternotebook+sagemath就配置成功了。我们测试一下,比如输入sage的参考文档里的一段代码
R

上图蓝框是我们期待的正确输出。
代码高亮
不过仍然有一个问题。如果按照如上配置的话,代码是不会高亮显示的,如下图所示:

原因是,默认的sage kernel的配置里语言那一项是sage而不是python,但vscode本身不支持sage的高亮显示。所以我们需要把语言项从sage改成python。具体改法如下[1]:
找到sage kernel的文件夹,默认位置是
C:Users<User>AppDataLocalSageMath-9.1runtimeoptsagemath-9.1localsharejupyterkernels
这个目录下有一个文件夹名称叫"sagemath",复制这个文件夹于同目录下,并改名为"sagemath-vscode",如下图所示:

打开sagemath-vscode文件夹,里面有kernel.json文件,用记事本或者vscode打开它,将里面的"language"后面改成"python”,将"display_name"后面改成"SageMath 9.1 for VSCode",改完后应如下图所示:

现在回到.ipynb文件,点击下图红框(SageMath那个位置)

然后会弹出一个框,在弹出的框中选择SageMath 9.1 for VSCode(注意不是原来的SageMath 9.1),之后我们就发现代码高亮了,如下图所示。

运行一下,发现能够正确输出。此时说明我们配置成功了。
目前的问题
尽管刚才设置了代码高亮,但只是python语言的高亮(vscode不支持sage语言的高亮),所以只是部分高亮,涉及到sage的函数是不会高亮的。这是不如jupyternotebook的。
除此之外,渲染公式上还有一些问题。如果使用如下命令,试图使代码的输出为latex形式
%
这在jupyternotebook上是可以的,但是在vscode里无法渲染代码输出里的公式,所以输出什么也看不到。这时需要右键单击你在其他地方写的已渲染好的公式,然后Math Settings->Math Renderer->Common HTML,这以后代码输出里的公式又会被正常渲染了(还有一种方法,重启vscode)。但每次都需要如上操作,比较麻烦。所以对于sage来说jupyternotebook的体验还是要好于vscode。
参考
- ^https://ask.sagemath.org/question/43240/sagemath-and-vscode/