gpt4 book ai didi

python - 如何在 Spyder(或任何其他调试器)的 ipdb 调试器中强制 Matplotlib 进行绘制?

转载 作者:IT老高 更新时间:2023-10-28 21:04:33 34 4
gpt4 key购买 nike

编辑

很遗憾,目前这是不可能的。我发现这是一个 bug in Spyder .开发人员是still figuring out how to approach this .


目标

在调试代码时可视化数据(我也想使用 Spyder!)。

尝试 #1:从 Spyder 的 IPython 运行 foo.bar

  • 使用以下代码创建一个名为 foo.py 的文件:

    from ipdb import set_trace as st
    import matplotlib.pyplot as plt

    def bar():
    st()
  • 在 IPython 中,键入以下内容:

    In [4]: import foo

    In [5]: foo.bar()
    --Return--
    None
    > somewhere_over_the_rainbow\foo.py(5)bar()
    3
    4 def bar():
    ----> 5 st()

    ipdb> plt.plot([1, 2], [3, 4])
    [<matplotlib.lines.Line2D object at 0x05CA8E90>]
    ipdb> plt.show()

情节仍处于“卡住”状态。如果我退出调试器,绘制更新。如果我尝试关闭绘图,IPython 会崩溃。显然两者都是不可取的,也不允许我在调试时看到数据。

尝试 #2:从命令行从 IPython 运行 foo.bar

  • 使用与尝试 #1 中相同的 foo.py:
  • 从命令行打开 IPython:

    In [4]: import foo

    In [5]: foo.bar()
    --Return--
    None
    > somewhere_over_the_rainbow\foo.py(5)bar()
    3
    4 def bar():
    ----> 5 st()

    ipdb> plt.plot([1, 2], [3, 4])
    [<matplotlib.lines.Line2D object at 0x03904070>]
    ipdb> plt.show()

程序按我的预期显示情节。但我想使用 Spyder。

尝试 #3:从命令行从 IPython 运行 baz.bar

  • 编写baz.py:

    from ipdb import set_trace as st
    import matplotlib.pyplot as plt

    st()
  • 从命令行打开 IPython:

    In [4]: import baz
    --Return--
    None
    > somewhere_over_the_rainbow\baz.py(4)<module>()
    2 import matplotlib.pyplot as plt
    3
    ----> 4 st()

    ipdb> plt.

然后 Spyder 完全卡住。

有什么建议吗?

注意 #1:在我的完整代码中,我有许多文件和许多函数,因此在一个没有函数的脚本中将它们混合在一起是不可行的。

注意 #2:使用任何 matplotlib 交互命令(例如 ion()、interactive(True) 等)均无效。

注意事项 #3:Spyder 版本 2.0.12、Python 2.6、matplotlib 1.0.1。

最佳答案

(此处为 Spyder 维护者)Spyder 4.2.0 于 2020 年 11 月 8 日发布,支持在调试时使用交互式 Matplotlib 图的能力。开箱即用,即不需要设置任何特殊选项。

对于以前的版本,最好的解决方案是在ipdb。这是一个例子:

from matplotlib.pyplot import imshow, pause
import numpy as np
x = np.random.rand(4,5)
imshow(x)
pause(1)

关于python - 如何在 Spyder(或任何其他调试器)的 ipdb 调试器中强制 Matplotlib 进行绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080921/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com