sách gpt4 ai đã đi

Lỗi liên kết Python Boost.Python

In lại 作者:行者123 更新时间:2023-11-28 19:22:09 39 4
mua khóa gpt4 Nike

我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 đây构建包含在我的发行版中的教程 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

hoặc

# 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

hoặc

$BOOST_ROOT/bjam python=$ANACONDA_PATH/bin/python

无论如何,我总是会收到这条消息:

[01:58] [tutorial] $ python hello.py
Lỗi nghiêm trọng của Python: PyThreadState_Get: không có luồng hiện tại
Abort trap: 6

比较一下系统 Python 调用:

[01:58] [tutorial] $ /usr/bin/python hello.py
hello, world

类似:Homebrew + Python on mac os x 10.8: Fatal Python error: PyThreadState_Get: no current thread importing mapnik

1 Câu trả lời

在尝试了我在网上找到的许多其他解决方案之后,我失去了耐心并决定采用我自己的(非常糟糕的)破解方法。我创建了 2 个 bash 脚本,一个用于将 sys 的 Python 链接到 Anaconda 的,另一个用于重新链接回原始 Python:

ana_py.sh:

#!/usr/bin/env bash
# Link to Anaconda's Python
# $ANACONDA_PATH is the path to your anaconda folder

# BIN
cd /usr/bin

if [ ! -h python ]; then
sudo mv python python_orig;
khác
sudo unlink python;

sudo ln -s $ANACONDA_PATH/bin/python python

if [ ! -h python-config ]; then
sudo mv python-config python-config_orig;
khác
sudo unlink python-config;

sudo ln -s $ANACONDA_PATH/bin/python-config python-config

# INCLUDE
cd /usr/include

sudo unlink python2.7
sudo ln -s $ANACONDA_PATH/include/python2.7 python2.7

# LIB
cd /usr/lib

sudo unlink python2.7
sudo unlink libpython2.7.dylib
sudo ln -s $ANACONDA_PATH/lib/python2.7 python2.7
sudo ln -s $ANACONDA_PATH/lib/libpython2.7.dylib libpython2.7.dylib


sys_py.sh:

#!/usr/bin/env bash
# Link to Mac OSX Python

# BIN
cd /usr/bin

sudo unlink python
if [ -f python_orig ]; then
sudo mv python_orig python;
khác
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python python;


sudo unlink python-config
if [ -f python-config_orig ]; then
sudo mv python-config_orig python-config;
khác
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config python-config;


# INCLUDE
cd /usr/include

sudo unlink python2.7
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 python2.7

# LIB
cd /usr/lib

sudo unlink python2.7
sudo unlink libpython2.7.dylib
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 python2.7
sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/Python libpython2.7.dylib


chạyana_py.sh后,您可以运行bootstrap.sh,b2bjam 无需提供/修改他们的任何 Python 参数/选项

关于python - Boost.Python python 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575527/

39 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com