我对嵌入式 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/