我没有编程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)
发生了什么......请帮助!!非常感谢你。
答案 0 :(得分: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