0%

WSL2上使用matplotlib结合VSCode远程不显示输出的解决方法

WSL2上使用matplotlib结合VSCode远程不显示输出的解决方法

报错信息

问题一般分为两种

  • 没有报错但是使用plt.show()之后没有任何输出
  • 使用matplotlib.use('Tkagg')之后出现报错Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running,或者是_tkinter.TclError: couldn't connect to display ":0.0"
    • image-20220627132430453

解决方法

  • 开始Import的时候改变顺序
import matplotlib
matplotlib.use('Tkagg') #这一句修改使用的后端输出设备
import matplotlib.pyplot as plt
  • 然后在windows上安装VcXsrv服务器并且启动,具体下载地址为 sourceForge

  • 安装过程中一路选择默认设置

  • 然后通过桌面图标启动VcXsrv

  • preview

  • preview

  • preview

  • preview

  • 然后正常情况会弹出Windows防火墙提示,允许访问即可

  • 然后修改WSL端的环境

  • 首先需要查看Windows系统和WSL2通信使用的虚拟网卡地址

sudo vim /etc/resolv.conf

# nameserver后面的地址就是Windows系统虚拟网卡的地址,记一下
# 需要取消下面两行内容的注释,禁用自动重新生成配置文件,否则重启后这个地址会变
[network]
generateResolvConf = false
  • 然后修改.bashrc
$ vim ~/.bashrc
# 在文件最后追加下面内容,地址使用上面查看到的
export DISPLAY=<nameServer IP地址>:0

$ source ~/.bashrc

详细可以参考配置VcXsrv

  • 最终效果
  • image-20220627133421950