PyPlot画图中后端配置导致的不出现弹出式窗口(解决一半)

针对如题所示的问题,昨天鼓捣了很久,成功了一半,求教大佬。
描述如下:
一些用户遇到了(但是人不多?导致解决方案不是完全适合)的一个问题,在安装PyPlot包之后,随意从网上找到一段代码测试:

using PyPlot
y = rand(20,2)
x = 1:20
plot(x, y[:,1], lw=2.0, label="1st", color="r", linestyle="--")
plot(x, y[:,2], lw=1.5, label="2nd", color="b", linestyle="-")
grid(true)
legend(loc=0)
axis("tight")
xlabel("index")
ylabel("value")
title("A simple plot2")

没有弹出式窗口的画图,如果加一句show(),发现报错:sys:1: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. 根据查找的资料发现,根本问题在于,Matplotlib 的后端配置是agg这个non-interactive,比如我显示一下它的backend发现:

julia> matplotlib.get_backend()
"agg"

其实网上有类似情况,很多人都是在python中遇到了这个问题,然鹅,我的python配置却一切正常,在Julia中出现了问题,也是很amazing。
因此我认为需要更改配置,类似这篇文章“ matplotlib: 有关 Backend 的说明”(https://blog.csdn.net/liubing8609/article/details/115273215)
但似乎改变配置文件 matplotlibrc 后仍没有效果,我怀疑是没有重新加载,因此卸载了PyPlot,此外在重新安装时也更加注意(把package的文件夹也删除了),使用了如下了组合方法:

ENV["PYTHON"]="D:\\Download\\my app\\python\\python.exe"
] add PyPlot

加一次退格键,

ENV["PYTHON"]="D:\\Download\\my app\\python\\python.exe"
ENV["MPLBACKEND"]="TkAgg"
] build PyCall

也就是我很小心的在安装前再此设置了环境变量,然后我期待有一个好结果,于是用matplotlib.get_backend() 去证明一下吧。

julia> using PyPlot

julia> matplotlib.get_backend()
"TkAgg"

但事实上,问题解决了一半。我使用的平台是VS code,如果对Julia程序运行会在Julia REPL中进行,然鹅在这里backend仍然是agg!也就是我最需要的地方还是没有把后端改过来:

我为此感到不可思议和头疼,为什么在Julia中backend已经修改,但在Julia REPL中仍存在问题呢?
无论怎么说,这篇作为经验贴描述都足够仔细(因为本人吃尽网上帖子逻辑混乱的苦头),希望有人给出解决办法,同时供各位参考。

提供一些我的意见作为参考。

  1. 首先,这是一个Python的问题,不是Julia的问题。如果按照你的操作流程,将ENV["PYTHON"]进行了设置而不是为空,那么PyPlot这个wrapper会选择去调用这个指定的Python版本。经常发生的问题是系统内同时存在多个Python版本,这时候就需要找到被真正使用的那一个。改变matplotlibrc没有效果,可能是你没有修改对对应版本Python的配置文件。有关修改方式,请参考stackoverflowmatplotlib backends。如果你使用了正确的Python版本,并且在Python里面默认interactive backend比如TkAgg, Qt5Agg,那么PyPlot也大概率能出图。有些时候为了避免新用户去折腾这一类奇怪的设置问题,默认的安装方式都是通过Conda直接下载一个新的Python供Julia使用的,和平时常用的Python进行隔离。对于熟悉Python的用户,才会手动链接已有的Python版本。
  2. Python是允许在runtime更换backend的。
  3. 在VSCode里面仍然是Agg,可能有几种情况:Julia也有多个版本;环境变量ENV["MPLBACKEND"]的修改某些情况下没有被记录保存;VsCode有什么和Python相关的特殊环境变量设置。我看到你在Windows下面用了Bash,说明你可能也有WSL,那么这个终端的Julia版本和直接在Windows下面打开的Julia是一样的吗?
  4. 很早以前关于VSCode下面PyPlot不出图的问题都是图片不显示,而不是backend non-interactive。

ENV 设置要保存