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