起因
python2没了,都往python3转了,SageMath也发布新的9.x版本,全部都改用python3了。
确实,python3多好,还用什么python2啊。
正好看到大佬们用的都是python3的SageMath了,而我还在用SageMath 8.9,代码复制过来都不太兼容。。。所以打算去更新一下SageMath。
环境
系统: macOS 10.15.5
时间:2020.06.05
过程
直接去官网 下最新版的SageMath 9.1,找离自己比较近的镜像节点。
这里有好几个选项,源码、app。
我一开始去下了sage-9.1-OSX_10.11.6-x86_64.dmg
,下好了,把它拿出来放到Applications
目录下。
这是一个还没编译好的,需要自己先运行sage
去makefile。
但是makefile途中,报错了:
google去搜,没有搜到相关的。看来我本机的环境稍微有点问题?
OK,换一个,去下sage-9.1-OSX_10.11.6-x86_64.app.dmg
。
这是一个app,已经编译好了,直接拖到Applications
目录下就可以了。
然后Command + space
,搜索Sage...
就能找到,打开,会自动启动jupyter server。
随便创建了一个Notebook,操作了下,的确是python3的,没问题,整好了。
但是还是比较喜欢从命令行里去启动这个server。
像这个样子:
但是sage
不在环境变量里,需要把它给添加进去。
sage
命令在/Applications/SageMath-9.1.app/sage
中,/usr/local/bin
在环境变量里,
可以在/usr/local/bin
里创建一个soft link:
|
|
因为之前的SageMath 8.9写了很多东西,不是很想删除,所以创建了两个soft link,用sage8
来指向旧版的、sage9
指向新版的。
然后再在~/.zshrc
里加几个alias:
alias sage8jupyter="cd ~/Documents/SageMath\ Workspace && sage8 -n jupyter"
alias sage9jupyter="cd ~/Documents/SageMath\ Workspace && sage9 -n jupyter"
alias sage="sage9"
这样默认的sage
命令就是新版的SageMath 9.1,然后也可以通过sage9jupyter
来快速切换到sage工作目录下并启动jupyter server。
看大佬们都是可以直接在sage里导入Crypto库、pwntools之类的,很方便,所以想着能不能也这样搞。
SageMath的python是自带的,跟系统的python不是一个东西。
如果直接在sage里from Crypto.Util.number import *
的话,是找不到这个包的:
所以需要给sage里的python去pip install这个包。
会报错,搜了一下,是因为macOS比较特殊,系统用另外一种方式去处理这种SSL连接之类的东西。
而sage-9.1-OSX_10.11.6-x86_64.app.dmg
里编译好的sage是没有openssl模块的。
找了好久,终于找到了一个完美的解决方法: https://ask.sagemath.org/question/51130/ssl-error-using-sage-pip-install-to-download-a-package/
已经有fix了,去链接里下载mac_sage9.tgz
即可。
解压,然后在mac_sage
文件夹所在的目录下,执行一下命令:
|
|
就能给sage添加ssl模块。
然后就能愉快地pip install了。
|
|
结果
-
给环境里加了一个SageMath 9.1
-
sage可以pip install了
ubuntu 18.04环境一间搭建脚本
|
|