使用Windows子系统Linux时设置Matplotlib后端

bin*_*unt 5 python linux matplotlib windows-subsystem-for-linux

我的Matplotlib后端一直在恢复TkAgg.这是一个问题,因为在Windows子系统Linux(WSL)中,你不能做GUI的东西,所以我得到错误

TclError:没有显示名称和没有$ DISPLAY环境变量

我试过添加一个matplotlibrc文件/home/<user>/.config/matplotlib(在Windows文件系统中,这是C:\Users\<user>\AppData\Local\lxss\home\<user>\.config\matplotlib).

matplotlibrc看起来像这样

backend : Agg
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做

$ cd /home/<user>/.config/matplotlib
$ ls -A
Run Code Online (Sandbox Code Playgroud)

没有出现.

当我尝试

 $ python
 >>> import matplotlib
 >>> matplotlib.get_backend()
 'TkAgg'
Run Code Online (Sandbox Code Playgroud)

很明显,它不是设置后端Agg.为什么不?

更新:

我已经发现只在Windows Python backend : AggC:\Users\<user>\AppData\Local\lxss\home\<user>\.config\matplotlib\matplotlibrc更改后端,而将Linux Python作为TkAgg.这很奇怪,因为Windows Python应该只使用C:\Users\<user>\AppData\Local\Enthought\Canopy\User\Lib\site-packages\matplotlib\mpl-data\matplotlibrc,对吧?

bin*_*unt 3

我想到了。我使用 Windows 创建了 matplotlibrc 文件 - 这就是为什么当我在 bash 中尝试时它没有显示$ ls -A。所以我这样做了(删除 Windows 创建的文件后):

$ cd /home/<user>/.config/matplotlib
$ touch matplotlibrc
$ echo "backend : Agg" > matplotlibrc
Run Code Online (Sandbox Code Playgroud)

touch matplotlibrc创建一个空的 matplotlibrc 文件)

这成功了,我的 Windows python matplotlib 的后端被保留为 Qt4Agg。


这是复制/粘贴的一行:

cd /home/<user>/.config/matplotlib; touch matplotlibrc && echo "backend : Agg" > matplotlibrc
Run Code Online (Sandbox Code Playgroud)