无语住了 WSL2 with VcXsrv

咱就是说,作者在 jupyter notebook 上想运行一个 GUI 界面,或者用 WSL2 下的 Python 跑一个图形程序。我用的是 Python 的 tkinter 库, 但是每当在jupyter notebook 运行或者直接运行一个 py file 时候,都会显示 can't connect display,无法连接显示。

原因是,作者使用的 jupyter notebook 是在 WSL2 下运行的, 需要一个 GUI 显示模块来连接,作者的解决方案是下载了一个 VcXsrv 到 Windows 系统。下载之后,关闭防火墙等选项,为了动态获取 WSL2 的 ip 地址,作者修改了 ~/.bashrc 文件,添加了一句

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

这样一来,自动获取 WSL2 的 Display,连接完成。但前提是每次运行这个 tkinter,或者其他需要 GUI display 的程序之前,都要打开 VcXsrv 的 xlaunch。更棘手的是,不先运行这个 VcXsrv 的 xlaunch, jupyter notebook 也打不开了。。。每次手动打开实在麻烦,便在 ~/.bash_aliases 里添加:

alias jupp="cd /mnt/e/Program\ Files\ \(x86\)/VcXsrv/ && chmod a+x xlaunch.exe && ./xlaunch.exe -run config.xlaunch && >

注意,必须先 cd 到 VcXsrv 的目录下。由于是 Linux 系统,打开一个 exe 需要授权,所以之后要加上 chmod a+x xlaunch.exe。 这之后 运行 xlaunch.exe -run config.xlaunch。 config 文件告诉VcXsrv 用之前保存的 config 比如 multiple windows,disable access control (使用 WSL2 的话这个很重要)。 最后运行 jupyter notebook 实现自动一体化。 汗....排查问题排查了半天,希望有帮助叭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值