客服

Spyder 远程连接矩池云机器教程

如何使用 Spyder 远程连接矩池云主机

Spyder 是 Python(x,y) 的作者为它开发的一个简单的 IDE,在 Anaconda 中预装,适合进行数据科学开发。Anaconda 是 Python 发行版,包含了 Python 解释器,集成开发环境(IDE)Spyder,还有常用的科学包module等。
Spyder 支持连接远程服务器,本文将介绍如何在 Spyder 中连接矩池云机器。案例环境为 64 位 WIN10。
Spyder 远程服务仅支持 Python 3 及以上版本,若您选择 Python 2.7 的镜像则无法使用,敬请谅解。

1. 租用一台矩池云机器

矩池云租用教程请移步 矩池云租用教程
矩池云提供网盘存储服务,您可先将数据集和脚本文件打包上传至网盘,提高上传速度,还能节省费用。
本教程使用密码登录方式连接 GPU。

2. 在服务器端运行命令

在矩池云中,打开'我的租用'列表,找到租用的机器,点击 HTTP 链接,进入 JupyterLab。
点击列表中的 HTTP 链接
点击 JupyterLab 中的 Terminal 按钮,打开 Terminal。
点击 Terminal

2.1. 输入命令

shell
jupyter --runtime-dir
该命令用以找到 Kernel 文件的路径。
找到 Kernel 文件路径
复制该命令的运行结果, /root/.local/share/jupyter/runtime(以上面指令输出为准),之后有用。

2.2. 输入命令

shell
pip install spyder-kernels
pip install -U ipykernel
pip install ipython --ignore-installed ipython
python -m spyder_kernels.console
启动一个 Spyder Kernel。
找到 Kernel 文件名
复制该 Kernel 的文件名,即图中红框部分,例如,图中的 kernel-64.json

2.3. 保存 Kernel 文件至本地

现在我们知道了 Kernel 文件路径和文件名,将前面两步复制的信息拼接后,可以得到该文件路径。由于JupyterLab 中无法打开隐藏文件和文件夹,因此无法直接下载该 JSON 文件。
我们通过文件复制粘贴的方式,将文件保存下来。此时 Kernel 已启动,该 Terminal 无法再运行其他命令,我们需要新建一个 Terminal,让我们点击左上角的加号,回到 Launcher。
重新回到 Launcher
然后再次点击 Terminal 新建,在新的 Terminal 中用 cat 命令可查看 Kernel 文件。
shell
cat /root/.local/share/jupyter/runtime/kernel-64.json
查看 JSON
复制该 JSON 。
在您本地桌面或其他位置,新建一个 kernel.json 文件。
新建本地文件
将该 JSON 复制进去然后保存。
复制JSON

3. 下载并安装 Spyder

下载 Spyder:Spyder 下载地址
按照提示安装即可。安装后启动 Spyder。
点击 Spyder

4. 在 Spyder 中配置链接

4.1. 安装 paramiko

在 Spyder 右下角的 IPython console 中,输入命令
shell
!pip install paramiko
!pip install pyzmq
!pip install ipykernel
运行命令
运行成功后重启 Spyder。

4.2. 连接至远程服务器

在 IPython console 中,右键点击已有 Console 的 Tab,在下拉框中选择 Connect to an existing kernel。也可点击右侧的齿轮按钮,在设置的下拉菜单中找到。
连接入口
在配置页面中,Connection File 选项用以配置 Kernel 文件。点击右侧浏览按钮,找到刚刚保存的 kernel.json 文件。
将 This is a remote kernel 前面的复选框选中。填写信息如下:
Host(主机名):hz.matpool.com 或 hz-t2.matpool.com,请以您 SSH 链接中给定的域名为准。
Port(端口): 矩池云租用记录里 SSH 链接里冒号后的几位数字,例如 44039。
User(用户名):root。
Password(密码):您租用机器时填写的密码。
SSH Keyfile 可不填。
示例见图。
Spyder 4
如果您使用的是 Spyder 旧版本,填写信息会有些许不同:
Host Name:{用户名}@{主机名}:{您的端口号}。例如:root@hz.matpool.com:44039.
Password:您租用矩池云机器时,填写的密码。
SSH Keyfile 可不填。
示例见图。
填写配置信息
点击 OK 开始连接。
当出现 root@hz.matpool.com 开头的 Kernel 时,意味着连接成功。
连接成功
如果中途出现以下报错:
AttributeError: 'EPollIOLoop' object has no attribute 'asyncio_loop',可以执行
text
conda install  tornado

5. 在 Spyder 中使用矩池云机器运行脚本

由于 Spyder 暂不支持文件同步功能,若直接点击 Run 按钮,在远程 Kernel 中会提示找不到文件。目前有两种办法可运行脚本。

5.1. 选中脚本运行

先选中本地要执行的脚本,然后选择菜单栏中的 'Run' - 'Run selection or current line',Spyder 会自动将脚本复制进 Kernel 里并执行。
选中
运行
运行结果

5.2. 手动输入

您可以在 IPython console里手动输入 Python 命令,或输入 !+Bash 命令,例如 !nvidia-smi 以查看显卡信息。
手动输入

5.3. 上传文件

由于 Spyder 暂不支持文件同步功能,若您需要引用数据集或文件,需要先使用网盘上传到矩池云,并修改脚本里的文件路径为远程文件的路径,并确认当前运行路径与远程目标路径一致。
例如,您要在脚本中执行 import modify 命令,但提示 modify 不存在,需要您先将 modify.py 文件上传到网盘,之后在 Spyder 中先输入 cd /mnt 命令进入网盘目录中,再运行脚本,此时脚本才能找到 modify.py 文件。
同理,若您上传了 dataset.tar.gz 数据集到网盘根目录中,需要在脚本中使用该数据集,则须在脚本内,将数据集的读取路径改为 /mnt/dataset.tar.gz