【发布时间】:2014-03-22 08:59:02
【问题描述】:
我正在运行具有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我按照 here 的说明构建了包含在我的发行版中的教程 Boost-Python 项目,并且构建良好。
尽管如此,输出编译库依赖于 Mac 的系统 Python,而不是我试图链接到的 anaconda Python:
[00:20] [tutorial] $ otool -L libboost_python.dylib
libboost_python.dylib:
libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0)
libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)
/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.18.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
/opt/local/lib/libgcc/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
[00:20] [tutorial] $ otool -L /usr/lib/libpython2.7.dylib
/usr/lib/libpython2.7.dylib:
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.2)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
我尝试了以下配置,但似乎都没有改变使用哪个 Python:
$BOOST_ROOT/bootstrap.sh --with-python=$ANACONDA_PATH/bin/python
或
# Here, I've explicitly chosen Anaconda-provided libpython2.7.dylib
# $BOOST_ROOT/stage/lib/libboost_python.dylib refers to the dynamic
# version of boost_python.
sudo g++ -I$BOOST_ROOT -I$ANACONDA_PATH/include -L$ANACONDA_PATH/lib
-lpython2.7 $BOOST_ROOT/stage/lib/libboost_python.dylib
hello.cpp -o hello_ext.so
或
$BOOST_ROOT/bjam python=$ANACONDA_PATH/bin/python
无论如何,我都会收到这条消息:
[01:58] [tutorial] $ python hello.py
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
下面是系统 Python 调用对比:
[01:58] [tutorial] $ /usr/bin/python hello.py
hello, world
【问题讨论】:
标签: python macos boost anaconda