我下载了Boost Python,并使用Mac Ports编译它,与我自己的Python版本相匹配,目前看来一切正常。
我的步骤如下...
$ /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python
Python 2.7.2 (default, Nov 17 2011, 00:52:26)
$ sudo ./bootstrap.sh --with-libraries=python --with-python-root=/opt/local/Library/Frameworks/Python.framework/Versions/2.7
$ ./b2
$ cd /Users/YourName/Downloads/boost_1_48_0/libs/python/example/tutorial
$ ../../../../bjam
...patience...
...patience...
...found 1577 targets...
...updating 12 targets...
common.mkdir bin
common.mkdir bin/darwin-4.2.1
common.mkdir bin/darwin-4.2.1/debug
darwin.compile.c++ bin/darwin-4.2.1/debug/hello.o
darwin.link.dll bin/darwin-4.2.1/debug/hello_ext.so
common.copy libboost_python.dylib
common.copy hello_ext.so
common.mkdir bin/hello.test
common.mkdir bin/hello.test/darwin-4.2.1
common.mkdir bin/hello.test/darwin-4.2.1/debug
capture-output bin/hello.test/darwin-4.2.1/debug/hello
**passed** bin/hello.test/darwin-4.2.1/debug/hello.test
...updated 12 targets...
$ ls
Jamroot hello.cpp hello_ext.so
bin hello.py libboost_python.dylib
$ python
Python 2.7.2 (default, Nov 17 2011, 00:52:26)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello_ext
>>> hello_ext.greet()
'hello, world'
>>>
此外,如果您不需要自己构建所有内容,可以使用Mac端口来帮助您。我没有尝试过,但看起来boost.python可用,尽管版本是1.47而不是1.48。
$ port info boost
boost @1.47.0, Revision 2 (devel)
Variants: debug, no_single, no_static, openmpi, python24, python25, python26, python27, python31, python32, regex_match_extra,
universal
Description: Boost provides free portable peer-reviewed C++ libraries. The emphasis is on portable libraries which work well with
the C++ Standard Library.
Homepage: http://www.boost.org
Library Dependencies: zlib, expat, bzip2, icu
Platforms: darwin
License: Boost-1.0
Maintainers: adfernandes@macports.org
实际上,为了解决这个问题,我们可以看一下我们的环境,并比较一下您是否仍然存在问题 :).
$ echo $press-TAB
(提示:这是一个命令行代码示例,用于展示如何使用tab键自动补全一个变量名。)
using python : 2.7 : ../Python-2.7.2/ ;
,但otool仍然列出了/System/Library/Framework
条目。 - sharveyusing python : 2.7.2 : ...
等等了吧? - James2.7.2
,它会给我一个警告:警告:"using python" 需要一个由两部分(主版本号、次版本号)组成的版本号;而你输入的是 2.7.2
。使用绝对路径也没有改变任何东西。在 Xcode 和./b2 --clean
中都进行了清理,但问题仍未解决... - sharvey/System/Library/Frameworks/Python.framework/Versions/2.7
中的python移开,因为这是boost python在构建和安装时所选中的。 - James