python - 带有 TkAgg 错误 : PyEval_RestoreThread: null tstate on save_fig() - do I need threads enabled? 的 Matplotlib

标签 python c matplotlib

我对嵌入式 Python 2.7.2 解释器 的问题感到困惑。我已将解释器嵌入到 Visual C++ 2010 应用程序中,它实际上只是调用用户编写的脚本。

我的最终用户想使用 matplotlib - 我已经解决了一些与其依赖 numpy 相关的问题 - 但是当他们调用 savefig() 时,应用程序崩溃:

**致命 Python 错误:PyEval_RestoreThread:NULL tstate

这不是使用标准 Python 2.7.2 解释器 运行相同脚本的问题,即使使用相同的站点包,所以我的嵌入似乎肯定有问题。我调用了 Py_Initialize() - 我需要设置 Python 线程吗?

我无法完全从这里的其他问题中找到解决方案,但我更担心的是,这是我如何设置 Python 解释器时出现的更广泛问题的征兆。

最佳答案

终于解决了这个问题 - 所以为了 Google 员工的缘故,我要解释发生了什么!

这仅在使用第三方库(如 numpy 或 matplotlib)时发生,但实际上与我代码中其他地方的错误有关。作为我编写的软件的一部分,我按照 Python C API 文档中显示的相同基本模式扩展了 Python 解释器。

在这段代码的末尾,我对一路创建的一些 Python 对象调用了 Py_DECREF 函数。我的错误是我在借用引用上调用了这个函数,这是不应该做的。

这导致软件在到达我用来清理的 Py_Finalize 命令时崩溃并出现上述错误。删除借用引用的 DECREF 修复了这个错误。

关于python - 带有 TkAgg 错误 : PyEval_RestoreThread: null tstate on save_fig() - do I need threads enabled? 的 Matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844628/

相关文章:

python - 使用 cx_Oracle 更改模式

c - C 的段错误处理程序只调用一次

python - Matplotlib 问题

pandas - 在 Python 中生成词云来显示数字的频率

python - Django 模板 : Translate include with variable

python - 如何提取用于 Doc2Vec 的单词

python - 如何使用 WaterfallDialog 获取当前用户详细信息?

c++ - 计算关键点的新位置

c - 一种计算 1 到 2 之间数字的对数底数 2 的有效方法

python - 如何调整 geopandas 中的颜色条大小?