从Linux连接到Windows IPython内核

时间:2014-06-02 22:06:35

标签: python ipython

  • 我有一台Windows机器,我启动了一个IPython内核(做一些在另一台机器上无法实现的东西)。
  • 我有一台Linux机器,我想连接到Windows机器上运行的IPython内核。
  • 我可以从Linux机器SSH到Windows机器(使用此解决方案:https://superuser.com/a/172299)。

我试过以下:https://github.com/ipython/ipython/wiki/Cookbook:-Connecting-to-a-remote-kernel-via-ssh。自动和手动解决方案都提供以下内容:

"错误:内核没有回复"

使用相同的解决方案,我可以从我的Linux机器连接到在Linux服务器上运行的IPython内核。有什么解决方案可以让它与Linux一起使用到Windows?

2 个答案:

答案 0 :(得分:1)

我再一次在https://github.com/ipython/ipython/wiki/Cookbook%3a-Connecting-to-a-remote-kernel-via-ssh上尝试了手动方式并且有效。详细说明:

windows-machine$ ipython kernel -f kernel-1234.json

linux-machine$ scp windows-machine:path/to/kernel-1234.json .
linux-machine$ cat kernel-1234.json
{
  "stdin_port": 55534, 
  "ip": "127.0.0.1", 
  "control_port": 58391, 
  "hb_port": 60540, 
  "signature_scheme": "hmac-sha256", 
  "key": "fa461cf7-f078-4c22-909f-cfa7d2a30596", 
  "shell_port": 60159, 
  "transport": "tcp", 
  "iopub_port": 59207
}
linux-machine$ ssh -f -N -L 55534:127.0.0.1:55534
linux-machine$ ssh -f -N -L 58391:127.0.0.1:58391
linux-machine$ ssh -f -N -L 60540:127.0.0.1:60540
linux-machine$ ssh -f -N -L 60159:127.0.0.1:60159
linux-machine$ ssh -f -N -L 59207:127.0.0.1:59207
linux-machine$ ipython console --existing kernel-1234.json

答案 1 :(得分:1)

您无需SSH连接到远程ipython内核,无论它是ipython还是WindowsLinux上运行的Mac内核}。您需要的是让远程内核的Ip对您尝试连接的终端可见。以下是步骤:

  1. 找出server的ip地址(运行ipython内核的机器,即你想要计算的地方)和client(来自的机器)您尝试连接到的地方):

    1.1。如果您在Windows,请打开命令提示符并执行ipconfig以查找IP地址。如果Windows服务器具有直接的Internet连接/局域网连接,您应该会看到几个ips,例如192.168.57.110.2.3.64以及127.0.0.1

    1.2。如果您在linux,请打开终端并输入ifconfigip addr show。您应该再次看到一些ips,例如192.168.57.110.2.3.64以及127.0.0.1

    1.3。通过server可以看到至少一个client个IP地址,并使用命令serverclient ping pingping可以在Windows或Linux终端上运行。如果您将Windows / Linux作为VM运行或位于防火墙后面,则很可能从另一端看不到您的客户端或服务器。您不必ping IP地址127.0.0.1。这是一个环回地址,只能从你获得此IP地址的同一台机器上看到。例如,如果从Windows计算机ping 127.0.0.1,它将ping同一台Windows计算机。如果您的clientserver实例在同一台计算机上运行,​​那么可以使用此地址。但是,如果您的客户端或服务器在VM或其他计算机上运行,​​则127.0.0.1将无效。

  2. 启动远程内核:

    2.1。一旦弄清楚客户端上的服务器上的哪个IP地址可见,请使用ipython kernel在计算机上启动内核。 ipython内核将启动并显示“要将另一个客户端连接到此内核,请使用: - 现有kernel-1234.json

    2.2。通过导入(https://stackoverflow.com/a/35094772/4752883)找到kernel-1234.json上的server文件 In [1]: from jupyter_client import find_connection_file In [2]: find_connection_file() Out[2]: 'C:\\Users\\me\\AppData\\Roaming\\jupyter\\runtime\\kernel-1234.json' 这适用于LinuxWindows

  3. 启动远程客户端:

    3.1。找到文件后,使用linux中的scppscpwinscp中的kernel-1234.json

    将其复制到服务器计算机上

    3.2。确保您与kernel-1234.json文件位于同一目录中。

    3.3。使用vim或您喜欢的文本编辑器打开"ip": "127.0.0.1"文件。你会注意到一行127.0.0.1。从您在步骤ip中找到的客户端可见的服务器更改1.3 json地址并保存jupyter console –existing=kernel-1234.json文件。

    3.4。使用kernel-1234.json启动远程内核,同时位于Windows所在的同一个驱动器中。

  4. 如果您已按照上述步骤操作,那么无论ipython内核是否在Linux / Mac / Accept上运行,您现在都应该能够连接到远程ipython内核。