2017-02-22 9 views
0

У меня нет опыта программирования Leap Motion, и я попытался запустить файл Sample.py на python2.7 (на IOS Sierra, 10.12.3). Тем не менее, он всегда дает мне следующее сообщение об ошибке: Фатальная ошибка Python: PyThreadState_Get: нет текущий поток Прервать ловушку: 6Ошибка Leap Motion: Fatal Python error: PyThreadState_Get: нет текущей нити Abort trap: 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) 

Что происходит ... Пожалуйста, помогите !! Огромное спасибо.

ответ

1

Получение прыжкового движения для работы с дистрибутивами 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) 

линия начиная с,/л Библиотека/Рамки/Python.framework/Версии/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 

Надеюсь, это должно сделать это. Но, как я уже сказал, если вы используете дистрибутив mac в/usr/local/bin /, то это более тяжело, и вам не нужны эти два шага.

Полный документ с прыжком здесь: https://community.leapmotion.com/t/python-thread-error-mavericks/1184/4

+0

Спасибо!но когда я пытался сделать sudo port select --set python python27, путь python, который я получаю после, остается/opt/local/bin/python, вместо/opt/local/bin/python27. Так что это не работает :( –