导入SWIG生成的包装器时,使用matplotlib绘图导致Python崩溃
我有一个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 #
更多的信息可以在这里找到。