交互式Go语言编程环境搭建

搭建前需要Linxu系统、配置好Go环境且搭建好Jupyter notebook或者Jupyter Lab。

参考链接:https://github.com/gopherdata/gophernotes#linux-or-freebsd

搭建Go开发环境

Go 几乎支持 Linux 所有的主流发行版操作系统,常见的包括 Ubuntu、CentOS(Redhat 企业版 Linux 的社区开源版)、Fedora、SUSE 等等,Go 在这些主流的 Linux 发行版操作系统上的安装方法都是一样的(当然某个发行版也可能会利用其软件安装管理器提供仅属于其自己的安装方法)。你可以参考下面这样的安装步骤。

首先,我们需要下载并解压 Go Linux 安装包:

1
[root@iZwz9aoyyban4v42tgyml2Z ~]# wget -c https://golang.google.cn/dl/go1.16.5.linux-amd64.tar.gz

这里有个小提醒:虽然 Go 官方下载站点是 golang.org/dl,但我们可以用针对中国大陆的镜像站点 golang.google.cn/dl 来下载,在中国大陆地区使用大陆镜像站点可以大幅缩短下载时间。

第二步,将下载完毕的 Go 安装包解压到安装目录中:

1
[root@iZwz9aoyyban4v42tgyml2Z ~]# tar -C /usr/local/ -zxf go1.16.5.linux-amd64.tar.gz

执行完上面解压缩命令后,我们将在 /usr/local 下面看到名为 go 的目录,这个目录就是 Go 的安装目录,也是 Go 官方推荐的 Go 安装目录。我们执行下面命令可以查看该安装目录下的组成:

1
2
3
[root@iZwz9aoyyban4v42tgyml2Z local]# ls -F /usr/local/go
api/ bin/ CONTRIBUTORS favicon.ico LICENSE PATENTS README.md SECURITY.md test/
AUTHORS CONTRIBUTING.md doc/ lib/ misc/ pkg/ robots.txt src/ VERSION

为了可以在任意路径下使用 go 命令,我们需要将 Go 二进制文件所在路径加入到用户环境变量 PATH 中(以用户使用 bash 为例),具体操作是将下面这行环境变量设置语句添加到 ~/.bashrc 文件的末尾:

1
2
3
[root@iZwz9aoyyban4v42tgyml2Z ~]# vim ~/.bash
.bash_history .bash_logout .bash_profile .bashrc
[root@iZwz9aoyyban4v42tgyml2Z ~]# vim ~/.bashrc

然后执行下面命令刷新环境变量的设置立即生效:

1
2
3
[root@iZwz9aoyyban4v42tgyml2Z ~]# source ~/.bashrc
[root@iZwz9aoyyban4v42tgyml2Z ~]# go version
go version go1.16.5 linux/amd64

此外,需要对GO的环境变量进行一个配置,为其配置代理,方便下载包:

1
2
3
4
5
[root@iZwz9aoyyban4v42tgyml2Z ~]# go env | grep GOPROXY
GOPROXY="https://proxy.golang.org,direct"
[root@iZwz9aoyyban4v42tgyml2Z ~]# go env -w GOPROXY=https://goproxy.cn,direct
[root@iZwz9aoyyban4v42tgyml2Z ~]# go env | grep GOPROXY
GOPROXY="https://goproxy.cn,direct"

目前为止,Go环境搭建已经完成。

为Jupyter配置Go内核

顺序执行以下命令:

1
[root@iZwz9aoyyban4v42tgyml2Z ~]# go env GO111MODULE=on go get github.com/gopherdata/gophernotes

如果报错:running gcc failed: exec: “gcc”: executable file not found in $PATH

这是因为你的机器上没有配置C编译器,配置一个即可:

1
2
yum -y install gcc  
yum -y install gcc-c++

检查是否安装成功:

1
2
3
4
5
6
7
8
[root@iZwz9aoyyban4v42tgyml2Z ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

安装成功后我们重新执行之前执行失败的语句。

1
env GO111MODULE=on go get github.com/gopherdata/gophernotes

接下来的语句执行前提是你安装了Jupyter,如果没有安装可以参考我上一篇文章:阿里云搭建JupyterNotebook服务

1
2
3
4
5
[root@iZwz9aoyyban4v42tgyml2Z ~]# mkdir -p ~/.local/share/jupyter/kernels/gophernotes
[root@iZwz9aoyyban4v42tgyml2Z ~]# cd ~/.local/share/jupyter/kernels/gophernotes
[root@iZwz9aoyyban4v42tgyml2Z gophernotes]# cp "$(go env GOPATH)"/pkg/mod/github.com/gopherdata/gophernotes@v0.7.3/kernel/* "."
[root@iZwz9aoyyban4v42tgyml2Z gophernotes]# chmod +w ./kernel.json
[root@iZwz9aoyyban4v42tgyml2Z gophernotes]# sed "s|gophernotes|$(go env GOPATH)/bin/gophernotes|" < kernel.json.in > kernel.json

为了确保gophernotes的二进制包已经安装在了GOPATH里,我只执行以下语句进行确认:

1
$ "$(go env GOPATH)"/bin/gophernotes

如果有输出:

1
2
[root@iZwz9aoyyban4v42tgyml2Z gophernotes]# "$(go env GOPATH)"/bin/gophernotes
2021/11/09 16:10:02 Need a command line argument specifying the connection file.

即代表正常。

检验

我们运行JupyterLab将服务挂起:

1
[root@iZwz9aoyyban4v42tgyml2Z gophernotes]# nohup jupyter lab --allow-root &

输入对应的地址访问JupyterLab:

可以看到Go内核已经加载进来了,我们来测试下是否可正常进行交互式编程:

测试完成,开始愉快的玩耍吧~

关于服务器

1024程序员节+双十一阿里云上云大优惠,大家伙有闲钱的不妨整台云服务器来玩玩?

我们这些打码的,谁不曾梦想有一台自己的云服务器?走到哪码就打到哪儿,想想就很nice!

趁着现在阿里云搞促销,2core2G服务器才72一年,相当于每月6元!想整的小伙伴动起来,一起来整台服务器玩玩吧!

有想购买服务器的盆友可以通过点击=>我的分享链接<=查看上云钜惠哦~

最后,祝大家玩的开心!