Boost.Python python链接错误

2023-12-20

我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明进行操作here http://www.boost.org/doc/libs/1_55_0/libs/python/doc/tutorial/doc/html/python/hello.html构建我的发行版中包含的教程 Boost-Python 项目,它构建得很好。

尽管如此,输出编译的库依赖于Mac的系统Python而不是anaconda https://store.continuum.io/cshop/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

or

# 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

or

$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

相似的:Mac os x 10.8 上的 Homebrew + Python:致命 Python 错误:PyThreadState_Get:没有当前线程导入 mapnik https://stackoverflow.com/questions/15678153/homebrew-python-on-mac-os-x-10-8-fatal-python-error-pythreadstate-get-no-cu


在尝试了我在网上找到的许多其他解决方案后,我失去了耐心并决定采用我自己的(非常糟糕的)黑客技术。我创建了 2 个 bash 脚本,一个用于将系统的 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;
else
    sudo unlink python;
fi
sudo ln -s $ANACONDA_PATH/bin/python python

if [ ! -h python-config ]; then
    sudo mv python-config python-config_orig;
else
    sudo unlink python-config;
fi
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;
else
    sudo ln -s /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python python;
fi

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

# 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

一旦你跑完ana_py.sh,你可以运行bootstrap.sh, b2, & bjam无需提供/修改任何 Python 参数/选项

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost.Python python链接错误 的相关文章

随机推荐

  • 如何在 Docker 上运行 .exe 文件?

    我目前正在尝试了解和学习Docker 我有一个应用程序 exe 文件 我想通过创建 Docker 在 Linux 或 OSX 上运行它 我在网上搜索过 但找不到任何可以做到这一点的东西 而且我对 Docker 还不够了解 无法尝试即兴创作一
  • 格式化具有多个百分号的字符串

    I know 用于逃避实际 字符串中的符号 所以 ds最终会是 10s在以下格式字符串中 但我不知道为什么我需要 5s在这个字符串中 毕竟 只有两个附加参数 BUFFSIZE 10 define BUFFSIZE 100 char buf
  • sapply 与复合函数的速度比较

    gt system time sapply rnorm 1000000 0 1 function x round x 2 user system elapsed 2 78 0 11 2 89 gt system time round rno
  • cref 不在对象浏览器中创建链接

    我在 C 2010 类库中有以下代码
  • 如何在css中定义多个类的hover事件?

    在CSS中 如何定义多个类的悬停事件以使用相同的属性 这似乎不起作用 my div hover my td hover border 1px solid red Thanks 您应该用逗号分隔 如下所示 my div hover my td
  • 以编程方式更改 ActionBar 选项卡下划线颜色

    我已经创建了操作栏 ActionBar actionbar getActionBar 操作栏的背景更改为 actionbar setBackgroundDrawable actionBarBackgroundImage 现在我需要以编程方式
  • Python,日志记录:使用带有字典配置的自定义处理程序?

    这是关于 Python 3 2 GNU Linux x86 64 上的日志记录模块 是否可以使用字典配置设置自定义处理程序 这是我正在尝试的代码 import logging import logging config class Cust
  • Android:首选项屏幕从右到左

    这是PreferenceScreen的xml文件 PreferenceCategory 根据我的需要显示为 RTL 但其他组件显示为 LTR 如何让他们RTL 我必须遵循这个link http android developers blog
  • 从 pyodbc 调用过程时出错

    这是我的第一个问题 所以 如果重复或格式错误 我很抱歉 我搜索了其他问题 发现该错误很常见 但出现在多种情况下 我有一个非常简单的 python 代码 我想在 MSSQL 中从 pyodbc 执行一个过程 import pyodbc con
  • tkinter 显示当前标签,删除前一个[重复]

    这个问题在这里已经有答案了 我正在尝试一个程序 它将显示在输入框中输入的相应名称的标签 问题 它重叠并显示标签 而不是消失以前的条目标签 我的编码 import Tkinter as tki class App object def ini
  • Backbone.js Underscore.js 过滤集合与数组

    我基本上正在尝试解决这个问题 但是使用数组并使用相应数组的值返回所有对象 而不仅仅是值 按属性值过滤骨干集合 https stackoverflow com questions 11762105 filter backbone collec
  • 推荐的元元素?

    为我的网站项目建立一个 基本框架 我想知道哪些元元素是真正必要 推荐的 我特别想知道如何处理语言属性 在下面的例子中 我认为 不必要地重复
  • gradle 构建因未知主机异常而失败

    我刚刚安装了新版本的 Android Studio 并尝试使用内置模板创建一个项目 我的环境是 Windows 7 SP1 64 位 在安全域环境中 我是我的计算机上的域管理员 这是我所看到的 C Users stuz AndroidStu
  • 术语“更新数据库”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查[重复]

    这个问题在这里已经有答案了 我正在使用 VS 2015 Community Update 3 当我尝试使用命令重新创建 EF 驱动的数据库时update database在包管理器控制台中 显示错误 术语 更新数据库 不被识别为 cmdle
  • sequelize postgres 将 fn 'date' 与 jsonb 值结合起来

    我需要比较格式字符串MM DD YYYY与postgres中的另一个使用sequelize在jsonb列上 在常规专栏上我会做类似的事情 sequelize where sequelize fn date sequelize col cre
  • 将元组列表作为参数传递给 scala 中的 Spark udf

    我正在尝试将元组列表传递给 scala 中的 udf 我不确定如何为此准确定义数据类型 我试图将其作为整行传递 但它无法真正解决它 我需要根据元组的第一个元素对列表进行排序 然后发回 n 个元素 我已经尝试过以下 udf 定义 def ud
  • Parse.com 推送通知未在 Android 后台显示

    我将 Parse com 与 Ionic 应用程序和 PushPlugin 结合使用 并尝试使用自定义发件人 ID 通过 GCM 实现 Parse 的推送通知 当我向所有设备发送消息或使用带有 cURL 的 REST API 时 当应用程序
  • 如何改变这种设计以避免沮丧?

    假设我有一个全部继承自基类的对象集合 就像是 abstract public class Animal public class Dog Animal class Monkey Animal 现在 我们需要喂养这些动物 但不让它们知道如何喂
  • 十进制转 JSON [重复]

    这个问题在这里已经有答案了 我正在从数据库中提取一个十进制值的总和 我正在尝试在 JSON 结果中使用该值 json dumps sum amount where amount is my Decimal Django 无法序列化Decim
  • Boost.Python python链接错误

    我正在运行带有最新 Boost 发行版 1 55 0 的 Mac OS X 10 8 4 Darwin 12 4 0 我正在按照说明进行操作here http www boost org doc libs 1 55 0 libs pytho