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

时间:2016-01-23 22:12:26

标签: python macos swig

使用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 个答案:

答案 0 :(得分:1)

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

事实证明你需要OSX

-undefined dynamic_lookup

而不是

-lpython