WSL Error: Can‘t open display

问题描述

本来是需要在Windows Subsystem Linux (WSL2) 环境下用python编写程序,然后画图展示。但不知什么原因在plt.plot() plt.show()后没有显示图片。之后想到可能是X11Forwarding (X11转发)设置的原因,于是准备用最简单的X程序测试一下X11转发功能是否正常

apt install x11-apps后输入xeyes却显示Error: Can't open display: 0

而在WSL1上输入xeyes却能正常弹出

解决方法的尝试

每一个方法测试的最后都默认加上xeyes

0.0 确认或修改 /etc/ssh/sshd_config 里 X11Forwarding yes

1.0 默认设置打开Xming(PC端,下同。不加说明则是在Linux端)
1.1 export DISPLAY=0.0
1.2 export DISPLAY=localhost:0.0

2.0 默认设置打开Xming

2.1 
export DISPLAY=`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0

# equals to
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

下载VcXsrv

3.0 默认设置打开VcXsrv
3.1 同2.1

4.0 控制面板\系统和安全\Windows Defender 防火墙\允许应用通过 Windows 防火墙
更改设置→勾选
在这里插入图片描述
4.1 同3.0
4.2 同2.1

5.0 同4.0
5.1 在cmd中切换到vcxsrv所在目录,通过命令行添加参数启动

vcxsrv -ac

5.2 同2.1

6.0 同4.0
6.1 在cmd中切换到vcxsrv所在目录,通过命令行添加参数启动

.\vcxsrv.exe -ac -terminate -lesspointer -multiwindow -clipboard -wgl

6.2 同2.1

以上方法,在我电脑上仅6成功出现那双会动的眼睛

其实在寻找解决办法的过程中发现了很多热心网友提出的方法,只是时间关系没办法一个一个测试

最后

我在WSL2的python环境中测试了画图显示

可用的几种展示方式

# import matplotlib
# 不同的 back-end
# matplotlib.use(“Agg”) ## non-interacive back-end
# matplotlib.use(“TkAgg”) *
# matplotlib.use(“GTkAgg”)
# matplotlib.use(“GTk”)
import matplotlib.pyplot as plt
plt.plot([0,1,2])  # 查看vcsrv会看到有占用,但不显示图像
plt.show()  # 显示图像

在这里插入图片描述

主要参考链接

@ChenaniahGSF https://github.com/microsoft/WSL/issues/4106
@github-samson https://github.com/PowerShell/Win32-OpenSSH/issues/1181

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值