导入SWIG生成的包装器时,使用matplotlib绘图导致Python崩溃

2 投票
2 回答
3808 浏览
提问于 2025-04-15 20:32

我有一个Python模块,它导入了一个用swig生成的模块。当我在这个模块中尝试调用matplotlib的show()函数时,Python就崩溃了,而且没有任何提示告诉我哪里出错了。当我把那个swig生成的模块的导入语句注释掉后,一切就正常了。有没有人知道这可能是什么原因造成的?我知道这个问题的描述很模糊。但我并不期待解决我的问题,只希望能得到一些提示,告诉我可以去哪里找出问题所在。谢谢。

2 个回答

1

我怀疑你是调用了 figure.show 而不是 plt.show()

下面这个脚本会崩溃:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot([25, 43, 65], [3500, 5500, 5800])

fig.show() # use plt.show() instead

而这个脚本运行得很好:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot([25, 43, 65], [3500, 5500, 5800])

plt.show()
1

我建议你先在gdb这个工具下运行你的脚本,然后查看一下调用栈。最近版本的gdb已经内置了对Python调试的支持。

$ gdb python
(gdb) run /path/to/script.py
# wait for crash #
(gdb) bt
# stack trace here #

更多的信息可以在这里找到

撰写回答