我通过以下方式在远程计算机上使用ipython内核:
user@remote_machine$ ipython kernel
[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing kernel-24970.json
然后通过手动ssh隧道(请参阅here)将本地计算机上的qtconsole连接到它:
user@local_machine$ for port in $(cat kernel-24970.json | grep '_port' | grep -o '[0-9]\+'); do ssh remote_machine -Y -f -N -L $port:127.0.0.1:$port; done
user@local_machine$ ipython qtconsole --existing kernel-24970.json
这很好用。但是,为了在调试时可视化我的数据,我想使用matplotlib.pyplot。虽然我已经在我的ssh隧道上启用了X11转发(通过-Y),但当我尝试绘制某些内容时,我收到以下错误:
TclError: no display name and no $DISPLAY environment variable
好像X11转发没有任何效果。
此外,当我访问远程计算机时,我使用以下命令启动了远程内核:
user@remote_machine$ ipython qtconsole
并从我的本地计算机重复相同的过程。这一次,我没有收到任何错误。但这些数据是在远程机器而不是本地机器上绘制的。
那么,有没有人知道是否可以连接到远程ipython内核,并在本地显示图表? (请注意内联模式有效,并显示本地qtconsole中的图表,但这对我来说没用,因为我经常需要放大)。
答案 0 :(得分:0)
更简单,更健壮的方法是像您一样远程运行ipython
,而不是尝试远程绘制数字,而是远程保存 。同时使用sftp
挂载远程目录并在本地文件浏览器中打开它。确保刷新目录视图,以防远程保存的图像不可见(否则可能需要一些时间才能实现)。注意一种刷新远程目录视图的简单方法here。