Référence: https://forums.leapmotion.com/forum/support/community-support/os-x/3169-python-pythreadstate-get-no-current-thread
Si vous essayez d'exécuter LeapMotion avec Python introduit par homebrew ou construit par vous-même
python
Fatal Python error: PyThreadState_Get: no current thread
Je pense qu'une erreur comme celle-ci apparaîtra et cela ne fonctionnera pas.
C'est parce que la dépendance de l'objet LeapPython.so, qui fournit un pont entre l'interface de Leap et Python, est pour Python fourni avec le Mac.
Je vais résoudre ça.
Vous aurez besoin des commandes ʻotool et ʻinstallation_name_tool. Je pense que cela nécessitait des outils de ligne de commande X-code, donc si vous ne trouvez pas la commande, veuillez d'abord l'installer.
Commencez par enquêter avec 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 1.0.9)
/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)
La partie de /Library/Frameworks/Python.framework/Versions/2.7/Python (compatibilité version 2.7.0, version actuelle 2.7.0) est la partie problématique.
Réécrivez ceci.
ʻInstall_name_tool [-change old_path new_path] `. Dans mon environnement, cela ressemble à ceci: Veuillez modifier la partie new_path de manière appropriée en fonction de l'environnement de chaque personne.
$ install_name_tool -change /Library/Frameworks/Python.framework/Versions/2.7/Python /usr/local/Cellar/python/2.7.6_1/Frameworks/Python.framework/Versions/Current/lib/libpython2.7.dylib LeapPython.so
Il semble que cela fonctionnera si vous faites de même avec macports et votre propre build. Une autre mise en garde est que l'événement on_frame ne se déclenche pas lors de l'exécution via tmux.
Recommended Posts