Technic

Windows电脑连接linux服务器跑python程序不显示图形的解决(使用Xming和putty)

2017-11-30

我在使用windows系统的电脑通过pycharm在实验室的linux服务器上运行python程序的时候,无法正常显示图形,程序卡在plt.show()语句处;而在windows电脑本地运行程序没有问题。通过询问M同事得知使用windows系统连接linux服务器作图的话,需要使用Xming程序,并保证其一直在后台运行。这篇文章就介绍一下怎么设置Xming和putty从而实现可以正常显示图像。

 

Step 1: 下载Xming和putty

可以从这里下载Xming并按着提示进行安装。putty大家应该都有了,没有的话在这里下载并安装。网上有人建议Xming的安装地址中不要有空格和中文,可以参考一下尽量避免。

 

Step 2: 设置putty

运行putty之后首先在界面里输入服务器的ip,可以使用save功能对这个session进行保存,这样下次就可以用load直接调用了(例如我存为了titan)。然后非常重要的是要转到Connection->SSH->X11标签下进行设置,勾选Enable X11 forwarding并输入X display的location,例如 localhost:10.0 (注意:这里之后可能需要更改

 

 

Step 3: 通过putty登陆服务器并进行测试

接下来通过putty登陆服务器,这里需要输入你在服务器的用户名和密码。成功登陆后运行xclock语句,由于我们还没有设置Xming服务器,这里会出现错误提示,例如

PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Coion refused Error: Can't open display: localhost:11.0

 注意最后的localhost为11.0,因此我们退出putty并把上一步X11标签下的X display location改为localhost:11.0

 

Step 4: 运行XLaunch

注意是运行XLaunch不是Xming,因为我们需要进行一些设置。运行XLaunch之后在Display number里输入上一步最后提示的localhost的数字,比如这里为11,之后一路下一步就好。

 

Step 5: 再次使用xclock进行检查

重复Step 3使用xclock命令进行检查,设置正确的情况下会显示如下图的时钟。

 

Step 6: 在pycharm中对项目进行设置

在项目对应的环境变量中增加下图中红框里所示的变量,即Name为DISPLAY,Value为localhost:11.0。如此设置好之后,运行python文件即可正确显示图形结果了。

 

备注

  1. 使用过程中需要保证putty和Xming一直是运行状态
  2. 如果运行时间太长,putty可能会失去响应,这时候关闭putty并重新登陆即可
  3. 如果出现“奇怪”的问题,可以尝试在putty中再次使用xclock命令检查localhost是否还是原来的数字,如果改变了的话,相应的设置也要进行改变,比如XLaunch里的Display number。(我曾经遇到过只更新XLaunch的Display number,不改变putty的X11设置就能使用的情况,原因不明,仅供参考。)

 

更多资料

  1. Trouble with Xming? 
  2. How to configure Putty & Xming (on your laptop)
  3. Installing/Configuring PuTTy and Xming

Leave a Reply

Your email address will not be published. Required fields are marked *