Mar*_*oma 7 python gtk glib matplotlib
当我执行
#!/usr/bin/env python
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.show()
Run Code Online (Sandbox Code Playgroud)
(以及更复杂的例子)我得到了
/usr/local/lib/python3.4/dist-packages/
matplotlib/backends/backend_gtk3.py:215: Warning:
Source ID 7 was not found when attempting to remove it
GLib.source_remove(self._idle_event_id)
Run Code Online (Sandbox Code Playgroud)
是什么导致这种情况,我怎么能摆脱这些警告?
我知道我可以用
import warnings
warnings.simplefilter("ignore")
Run Code Online (Sandbox Code Playgroud)
摆脱所有警告,但这不是我要求的.我想要警告,但没有来自matplotlib(特别是上面的那个).
很抱歉提前回答了一个老问题,但我在安装 Python 3.6.9 并matplotlib通过pip运行 Linux 发行版的机器上遇到了类似的问题。我的目的是能够重新运行pyplot在所述机器上升级 Python 后涉及的旧脚本。虽然脚本一直运行到完成并提供了预期的输出,但我总是收到以下警告:
/home/jefgrailet/.local/lib/python3.6/site-packages/matplotlib/backends/backend_gtk3.py:195: Warning: Source ID 8 was not found when attempting to remove it
GLib.source_remove(self._idle_draw_id)
Run Code Online (Sandbox Code Playgroud)
在使用savefig()方法时pyplot(我想该方法也会发生类似的问题show())。警告中提到的行对应于在backend_gtk3.py以下位置找到的此方法:
def destroy(self):
#Gtk.DrawingArea.destroy(self)
self.close_event()
if self._idle_draw_id != 0:
GLib.source_remove(self._idle_draw_id)
Run Code Online (Sandbox Code Playgroud)
我查看了matplotlib GitHub以检查是否有相同脚本的更新版本或是否已知此问题,结果发现上述方法的当前实现仅依赖于self.close_event()指令,即GLib.source_remove()没有必要。
因此,我注释了上面代码中的最后两行并保存了更改。进行此编辑后,我可以运行我的脚本而不会收到任何警告。我希望这会帮助遇到类似问题的人。
| 归档时间: |
|
| 查看次数: |
4629 次 |
| 最近记录: |