【问题标题】:Leap Motion error: Fatal Python error: PyThreadState_Get: no current thread Abort trap: 6Leap Motion 错误:致命的 Python 错误:PyThreadState_Get:没有当前线程中止陷阱:6
【发布时间】:2017-02-22 20:02:28
【问题描述】:

我没有编程 Leap Motion 的经验,我尝试在 python2.7 上运行 Sample.py 文件(在 IOS Sierra,10.12.3 上)。但是,它总是给我以下错误: 致命的 Python 错误:PyThreadState_Get:没有当前线程 中止陷阱:6

当我尝试时

which python2.7

我明白了

/opt/local/bin/python2.7

当我跑步时

otool -L LeapPython.so

我明白了

LeapPython.so:
    /opt/local/bin/python2.7/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)
    @loader_path/libLeap.dylib (compatibility version 0.7.0, current version 2.3.1)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)

我的操作系统中有几个 python 版本。当我运行sudo port select --list python 我明白了

Available versions for python:
    none
    python26-apple
    python27
    python27-apple (active)

发生了什么...请帮忙!!非常感谢。

【问题讨论】:

    标签: python leap-motion


    【解决方案1】:

    让跳跃运动与通过端口或 brew 安装的 python 发行版一起工作需要一些额外的步骤。所以为方便起见,请使用默认的系统python。

    sudo port select --set python python27
    

    然后检查它:

    which python
    

    此时你应该得到:

    /usr/local/bin/python27
    

    现在我将重新尝试使用 SDK,运行 sample.py。

    如果你想使用端口版本,你必须选择端口版本,它位于:

    /opt/local/bin/python2.7
    

    然后运行 ​​otool 实用程序以显示当前加载程序路径:

    otool -L LeapPython.so
    

    这将显示类似于以下内容的输出:

    LeapPython.so:
        @loader_path/LeapPython.so (compatibility version 0.0.0, current version 0.0.0)
        /Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
        @loader_path/libLeap.dylib (compatibility version 0.7.0, current version 2.0.1)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
    

    以 /Library/Frameworks/Python.framework/Versions/2.7/Python 开头的行是对 Python 的引用,需要使用 install_name_tool 实用程序进行更改。

    其次,运行 install_name_tool 实用程序将 Python 引用更新到所需位置。例如:

    install_name_tool -change /Library/Frameworks/Python.framework/Versions/2.7/Python \
    /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib \
    LeapPython.so
    

    希望应该这样做。但是就像我说的,如果你使用的是 /usr/local/bin/ 中的 mac 发行版,那么它更简单,你不需要这两个步骤。

    来自跳跃的完整文档: https://community.leapmotion.com/t/python-thread-error-mavericks/1184/4

    【讨论】:

    • 谢谢!但是当我尝试执行sudo port select --set python python27时,我得到的python路径仍然是/opt/local/bin/python,而不是/opt/local/bin/python27。所以它并没有真正起作用:(
    猜你喜欢
    • 2014-06-12
    • 2017-06-08
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2017-05-11
    相关资源
    最近更新 更多