如果你在服务器上面已经安装了 anaconda,但是想在本地通过 spyder 调试 python 代码,那么就需要将本地的 spyder 远程连接到服务器上面。其原理在于服务器上面开个 kernel,然后让 spyder 连接到。
我用的是 anaconda3.5、python3.6,在这个过程当中我踩了一些坑,结合步骤共享如下:
服务器终端输入:
python -m spyder_kernels.console
如果出现如下报错1:
- ModuleNotFoundError: No module named 'IPython.core.inputtransformer2'
则重新安装 ipython,输入:
pip install spyder-kernels
安装后依然出现报错1,则重新安装 ipython,输入:
pip install ipython --ignore-installed ipython
接下去,如果出现报错2:
- ImportError: cannot import name 'AsyncGenerator'
是因为 prompt-toolkit 版本过高,安装一个低版本的,输入:
pip install prompt-toolkit==2.0.10
另外,确保本地和服务器上都安装了 paramiko(此包用于连接 ssh),如果没有,则输入:
pip install paramiko
此时,回到最初,服务器输入 python -m spyder_kernels.console 后,出现如下信息:
在用户目录下找到对应的 json 文件(一般位于:/home/用户/.local/share/jupyter/runtime/),拷贝到本地。
然后让本地的 spyder 连接一个存在的 kernel,如下图:
注意:
host name的信息填写:用户名@主机的ip:登录的端口;ssh key 可以不填写,密码是用户名密码。
我最后发现这其实和远程登录服务器后直接使用终端没什么区域,左侧代码区和右侧的远程 ipython 不连通。所以,最好的方法还是 windows 映射 linux 磁盘驱动,这样既方便数据交互也方便代码调试。