spyder使用远程的python内核

spyder虽然平时在本地用起来很方便,但是偶尔还是想使用远程运行远程linux服务器上的代码和环境

 

1.需要在远程的服务端启动spyder服务

启动spyder核

root@AI# python -m spyder_kernels.console
NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.

To exit, you will have to explicitly quit this process, by either sending
"quit" from a client, or using Ctrl-\ in UNIX-like environments.

To read more about this, see https://github.com/ipython/ipython/issues/2049


To connect another client to this kernel, use:
    --existing kernel-26032.json

会生成一个json文件 ,具体文件的位置不是在执行这条命令的路径下,需要使用这个命令找到路径:

root@AI# jupyter --runtime-dir
/run/user/0/jupyter

接下来在这个路径 找到json 文件(kernel-26032.json) ,拷贝这个json文件到Windows上

接下来 就可以使用win端的spyder连接了

 

2.连接spyder

在spyder的右下侧找到这个进连接

 接下来会弹出来一个窗口

host的使用格式:root@ip:端口号

ssh key不用管,内容填好然后点击ok就可以连接上了,如果出现下面错误

 

然后需要在win上安装一下就行

pip install Paramiko

然后再去连接就可以了

注意的是,安装Paramiko后需要重启spyder才能生效 ,不然很可能还是一样的错误

3.使用

连接好的界面相当于python的命令行形式

比如试一下: 

发现是没问题的

上面只是命令行形式,但是很多时候我们 还是想运行一个python文件方便 一些

注意的是,没办法直接运行Windows上面的python 文件的,会找不到路径,因为我们python核毕竟在远程,我们也没进行远程提交任务到服务端

接下来我们运行一下linux远程的文件

 

代码 如下

import subprocess
top_info = subprocess.Popen(["/data/opt/AAN/bin/python3", "/data/opt/test.py"], stdout=subprocess.PIPE)

top_info.communicate()

这个test.py是linux远程的文件,内容如下:

print(1)
print(1)
print(1)
print(1)

我们可以看到,前面的运行结果就是四个1

 

不过结果还是令人不满意,因为这样的话,和xshell上运行远程也没区别,那干嘛还用spyder呢 

下面这样就可以在win上进行操作:

# -*- coding: utf-8 -*-

print(1)
import torch
print(torch.__version__)
# %%

在代码最后一行加入# %%

使之成为cell

然后这样就行或者按键盘的Ctrl+Enter键也可以

运行结果:

这样本地的python文件就可以直接运行了

不过,还是有问题,因为还没 读取数据,这个运行方式相当于只是将代码发送给了console

因此如果我们这样读取本地文件的数据,会出现

# -*- coding: utf-8 -*-

import pandas as  pd
df=pd.read_csv('C:\\sample-orders.csv')
print(df)
# %%

 

需要将路径修改为linux服务器上的数据路径,也就是数据需要上传到上面:

这样就行:

# -*- coding: utf-8 -*-

import pandas as  pd
df=pd.read_csv('/data/opt/sample-orders.csv')
print(df)
# %%

运行结果:

不过还会有新的问题,比如调用另外一个文件的函数时会出错,因为cell相当于只是发送cell里面的代码,而不知道依赖的文件在哪,这样会报错

这里是调用Utils.py下面的函数

# -*- coding: utf-8 -*-

from Utils import get_data

df=get_data('/data/opt/sample-orders.csv')
print(df)
# %%

 

 解决方式,索性直接将需要依赖的文件(这里是Utils.py)上传到linux上,固定在某个路径下,这里我是将Utils.py放在了/data/opt/test下面。

# -*- coding: utf-8 -*-
import sys
sys.path.append("/data/opt/test")
from Utils import get_data

df=get_data('/data/opt/sample-orders.csv')
print(df)
# %%

 结果:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值