Mer*_*moz 53 python ssh matplotlib
我有一个python代码在远程机器上进行一些计算,名为A.我ssh
从一台名为B的机器上连接A via .有没有办法在机器B上显示数字?
Dav*_*d Z 30
当然,您可以启用X11转发.通常,这是通过在连接到远程计算机时传递-X
或-Y
选项来完成的ssh
ssh -X computerA
Run Code Online (Sandbox Code Playgroud)
请注意,计算机A上的SSH守护程序也必须配置为启用X11转发.这是通过推杆完成的
X11Forwarding yes
Run Code Online (Sandbox Code Playgroud)
在计算机A的sshd_config
配置文件中.
如果计算机A的SSH守护程序未启用X11转发,则可以始终让Python将计算结果写入文本文件,将其下载到计算机B,并在本地使用Matplotlib.
Eri*_*got 26
如果在远程计算机(B)上的Mac OS X上使用matplotlib,则必须首先确保使用基于X11的显示器后端之一,因为本机Mac OS X后端无法将其图表导出到另一个显示.选择后端可以实现
import matplotlib
matplotlib.use('GTK') # Or any other X11 back-end
Run Code Online (Sandbox Code Playgroud)
支持的后端列表可以通过提供use()
不正确的后端名称来获取:matplotlib然后打印一条错误消息,列出可能的后端.
然后可以使用ssh X11转发来显示matplotlib图.
Val*_*yal 13
以下内容适用于本地计算机(机器B)上的Mac OS X和远程(机器A)上的ubuntu.
您需要在本地计算机上安装X11服务器才能执行此操作.
如果您运行的是最新版本的Mac OSX(OS X Mountain Lion或更新版本),则不会预装X11(请参阅http://support.apple.com/kb/ht5293).打开Mac终端,检查是否有X11,然后运行命令xterm
.如果X11窗口打开,那么你已经完成了设置.如果没有找到命令,请转到http://xquartz.macosforge.org/landing/并安装X11服务器.然后注销并重新登录到您的mac.
重新登录后,尝试xterm
再次运行命令.它应该打开X11窗口.此时,还应正确设置$ DISPLAY变量.如果未设置,请确保自从XQuartz安装X11后已登录/注销.
echo $DISPLAY
/tmp/launch-I9I3aI/org.macosforge.xquartz:0
Run Code Online (Sandbox Code Playgroud)
然后从本地机器,使用ssh -X远程进入远程机器A:
ssh -X user@machineA
Run Code Online (Sandbox Code Playgroud)
然后在远程机器上:
python
>>> import matplotlib
>>> matplotlib.use('GTKAgg') #I had to use GTKAgg for this to work, GTK threw errors
>>> import matplotlib.pyplot as plt #... and now do whatever you need...
Run Code Online (Sandbox Code Playgroud)
确保matplotlib.use
在从matplotlib
(例如matplotlib.pyplot
)导入任何其他内容之前调用
有关使用ssh -X的其他有用的故障排除提示:http: //oroborosx.sourceforge.net/remotex.html#usessh
GTK似乎无法使用Python3在Ubuntu上工作.相反,我使用了tkagg(来自这个答案):
import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
用这个测试:
import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt
plt.plot([1, 2, 3])
plt.show()
Run Code Online (Sandbox Code Playgroud)
小智 5
我已经使用IPython解决了相关问题。步骤如下:
步骤 1:使用以下命令在远程计算机 (A) 本地安装 IPython 和 Jupyter(假设没有 root 权限):
pip install --user ipython
pip install --user jupyter
Run Code Online (Sandbox Code Playgroud)
更新 matplotlib:
pip install --user -U matplotlib
Run Code Online (Sandbox Code Playgroud)
第2步:
从远程计算机中的代码目录运行 Jupyter(无需浏览器)(A):
cd PATH/TO/THE/CODE
jupyter notebook --no-browser --port=8080
Run Code Online (Sandbox Code Playgroud)
执行此命令后,将给出类似于以下内容的 URL:
http://localhost:8080/?token=5528ab1eeb3f621b90b63420f8bbfc510edf71f21437c4e2
步骤3:
现在在本地计算机 (B) 中打开另一个终端并使用 ssh 连接到远程计算机 (A):
ssh -N -L 8080:localhost:8080 user_id@remote.host
Run Code Online (Sandbox Code Playgroud)
步骤 2和步骤 3中的端口号必须相同。在本示例中,端口号为 8080。
步骤4:
将步骤 3中的 URL 复制并粘贴到本地计算机 (B) 的浏览器中。
现在,可以通过浏览器使用远程计算机中的笔记本,并且可以使用远程计算机中的数据生成绘图。
归档时间: |
|
查看次数: |
64059 次 |
最近记录: |