在 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