Anscheinend kann Mac OS X El Capitan das NAOqi Python SDK aufgrund einer neuen Sicherheitsfunktion namens System Integrity Protection (SIP) nicht verwenden.
Wenn Sie eine solche Fehlermeldung erhalten, liegt dies an den Sicherheitsfunktionen von 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
>>>
Es scheint ein Problem damit zu geben, wie auf die Bibliothek verwiesen wird, auf die das SDK verweist, und ich muss warten, bis das SDK offiziell repariert ist. (Jedes NAOqi 2.4.2 SDK wird derzeit von Yosemite auf dem Mac unterstützt.)
Es wird eine vorläufige Antwort sein, aber ich habe ein Skript erstellt, um den Patch anzuwenden.
patch_naoqi_python_sdk_for_elcaptain.sh
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Parameterfehler" 1>&2
echo "sh patch_naoqi_python_sdk_for_elcaptain.sh naoqi_python_SDK-Pfad"
exit 1
fi
NAOQIDIR=$1 # "${HOME}/naoqi/pynaoqi-python2.7-2.4.2.26-mac64"
if [ ! -e ${NAOQIDIR}/naoqi.py ]; then
echo "Der angegebene Pfad scheint nicht das Naoqi Python SDK zu sein"
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
Geben Sie den Pfad des NAOqi SDK im Parameter an
sh patch_naoqi_python_sdk_for_elcaptain.sh Python NAOqi SDK-Pfad
Recommended Posts