What does `Fatal Python error: PyThreadState_Get: no current thread` mean?

What does `Fatal Python error: PyThreadState_Get: no current thread` mean?

我正在将一个 mpi 通信器从 python 传递到 C。我选择使用 boost 的 mpi 通信器,因为 mpi4py 似乎没有很好的 C 支持。看看:

        try: from boost.mpi import world
        except ImportError: from mpi import world
        err = run_with_mpi(infile, world, stdout, stderr, exc)

在安装了 boost.mpi 的系统上,这不会引发任何错误。但是,boost.mpi 不能安装在 mac 上。我使用自制软件的 boost155 公式安装了 boost 的 mpi.so 模块,然后将 .so 文件添加到 python 路径。

一般来说,Fatal Python error: PyThreadState_Get: no current thread是什么意思?此消息为像我这样的开发人员提供了哪些线索?

完整错误信息:

Fatal Python error: PyThreadState_Get: no current thread
[kilojoules-20160s:64471] *** Process received signal ***
[kilojoules-20160s:64471] Signal: Abort trap: 6 (6)
[kilojoules-20160s:64471] Signal code:  (0)
[kilojoules-20160s:64471] *** End of error message ***

如果自制程序公式中的 .so 文件链接到与您 运行 不同的 python 库,则可能会出现此问题,另请参阅 this thread and this response。 =14=]

如果您没有其他依赖项,那么 运行 您的程序使用来自自制软件的 python 解释器(应该位于 /usr/local/bin/ 中)可能会解决问题。