Apparemment, Mac OS X El Capitan ne peut pas utiliser le SDK NAOqi Python en raison d'une nouvelle fonctionnalité de sécurité appelée System Integrity Protection (SIP).
Si vous obtenez une erreur comme celle-ci, cela est dû aux fonctionnalités de sécurité de SIP.
>>> import naoqi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/tkawata/naoqi/pynaoqi-python2.7-2.4.2.26-mac64/naoqi.py", line 9, in <module>
import qi
File "/Users/tkawata/naoqi/pynaoqi-python2.7-2.4.2.26-mac64/qi/__init__.py", line 66, in <module>
from _qi import Application as _Application
ImportError: dlopen(/Users/tkawata/naoqi/pynaoqi-python2.7-2.4.2.26-mac64/_qi.so, 2): Library not loaded: libboost_python.dylib
Referenced from: /Users/tkawata/naoqi/pynaoqi-python2.7-2.4.2.26-mac64/_qi.so
Reason: unsafe use of relative rpath libboost_python.dylib in /Users/tkawata/naoqi/pynaoqi-python2.7-2.4.2.26-mac64/_qi.so with restricted binary
>>>
La façon dont le SDK fait référence à la bibliothèque semble être un problème et je dois attendre que le SDK soit officiellement corrigé. (Chaque SDK NAOqi 2.4.2 est actuellement pris en charge par Yosemite sur Mac)
Ce sera une réponse provisoire, mais j'ai fait un script pour appliquer le patch.
patch_naoqi_python_sdk_for_elcaptain.sh
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Erreur de paramètre" 1>&2
echo "sh patch_naoqi_python_sdk_for_elcaptain.sh naoqi_python_chemin SDK"
exit 1
fi
NAOQIDIR=$1 # "${HOME}/naoqi/pynaoqi-python2.7-2.4.2.26-mac64"
if [ ! -e ${NAOQIDIR}/naoqi.py ]; then
echo "Le chemin spécifié ne semble pas être le SDK python naoqi"
exit 1
fi
cd ${NAOQIDIR}
for file in `ls *.dylib *.so`
do
# patch all library internal cross references
echo "Patching " $file "..."
for fileother in `ls *.dylib *.so ;ls qi *.dylib *.so`
do
# library
echo " Patching " $fileother " with " $file "..."
install_name_tool -change $file $NAOQIDIR/$file $fileother
done
# patch Python reference for the library
install_name_tool -change /Library/Frameworks/Python.framework/Versions/2.7/Python /System/Library/Frameworks/Python.framework/Versions/2.7/Python $file
done
for file in `ls *.dylib *.so`
do
# patch all library internal cross references
echo "Patching " $file "..."
fileother="qi/plugins/libqimodule_python_plugin.dylib"
# library
echo " Patching " $fileother " with " $file "..."
install_name_tool -change $file $NAOQIDIR/$file $fileother
# patch Python reference for the library
install_name_tool -change /Library/Frameworks/Python.framework/Versions/2.7/Python /System/Library/Frameworks/Python.framework/Versions/2.7/Python $file
done
Spécifiez le chemin du SDK NAOqi dans le paramètre
sh patch_naoqi_python_sdk_for_elcaptain.sh Chemin du SDK Python NAOqi