在 OSX 下使用 SWIG 时出现致命的 Python 错误

Posted

技术标签:

【中文标题】在 OSX 下使用 SWIG 时出现致命的 Python 错误【英文标题】:Fatal Python error when using SWIG under OSX 【发布时间】:2016-01-23 22:12:26 【问题描述】:

我在使用 SWIG 生成的 Python 接口时遇到了麻烦(我有 OSX 10.11.12)。在编译并将所有内容链接在一起之后:

swig -python erk_integrator.i
gcc -c -fPIC -O3 model.c auxiliary_functions.c timing_functions.c
gcc -c -fPIC -O3 erk_integrator.c erk_integrator_wrap.c -I. -I/usr/local/include/python2.7
gcc -lpython -dynamiclib model.o erk_integrator.o erk_integrator_wrap.o auxiliary_functions.o timing_functions.o -o _erk_integrator.so

我尝试了一个测试脚本,但是 Python 抛出了一个致命错误:

/usr/local/bin/python test_erk.py

Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6

但是当我运行时

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 test_erk.py 

一切正常。但是,我需要使用 /usr/local/bin/python (来自 Homebrew)而不是系统 Python。

我认为链接步骤出了点问题。非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

这篇博文帮我解决了:blog.tim-smith.us/2015/09/python-extension-modules-os-x

原来你需要在 OSX 上

-undefined dynamic_lookup

而不是

-lpython

【讨论】:

以上是关于在 OSX 下使用 SWIG 时出现致命的 Python 错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 OS X El Capitan 上安装 PyCrypto 时出现致命错误

为 C# 使用 swig 时出现 TypeInitializationException

SwiftUI - 使用“pushViewController”时出现致命错误

Swig:包装全局静态常量时出现语法错误

设置数据表编辑器时出现致命错误

编译 SWIG 输出的包装器模块时出现 6 个错误?