J'essaye d'installer ROS sur Debian Jessie et je cours une erreur quand je cours sudo rosdep init
. Les instructions que je suis sont à cette URL (http://wiki.ros.org/kinetic/Installation/Source). J'installe à partir de la source et non pas de leurs repos en raison de certains conflits de bibliothèque.Rosdep ne parvient pas à importer le module python pyexpat
L'exécution sudo rosdep init
aboutit à la sortie suivante.
Traceback (most recent call last):
File "/usr/bin/rosdep", line 3, in <module>
from rosdep2.main import rosdep_main
File "/usr/lib/python2.7/dist-packages/rosdep2/__init__.py", line 40, in <module>
from .installers import InstallerContext, Installer, \
File "/usr/lib/python2.7/dist-packages/rosdep2/installers.py", line 35, in <module>
from rospkg.os_detect import OsDetect
File "/usr/lib/python2.7/dist-packages/rospkg/__init__.py", line 42, in <module>
from .rospack import expand_to_packages, get_package_name, \
File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 35, in <module>
from xml.etree.cElementTree import ElementTree
File "/usr/lib/python2.7/xml/etree/cElementTree.py", line 3, in <module>
from _elementtree import *
ImportError: PyCapsule_Import could not import module "pyexpat"
Je pensais que ce python était tout simplement pas trouver le module, donc j'ai regardé où il se trouvait et au chemin de python, en vain.
[[email protected]:~ ] $$ find/-name pyexpat*
/usr/include/python2.7/pyexpat.h
/usr/include/python3.4m/pyexpat.h
/usr/share/jython/Lib/pyexpat.py
/usr/share/jython/Lib/pyexpat$py.class
/usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so
>>> import sys
>>> print sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
Donc, c'est dans le chemin. J'ai ensuite couru un strace -e open rosdep
juste assurez-vous qu'il trouvait le fichier. Voici la sortie de cela. Il semble qu'il trouve le fichier et le ferme immédiatement. Voici le bit pertinent.
open("/usr/lib/python2.7/lib-tk/pyexpat.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/python2.7/lib-tk/pyexpat.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so", O_RDONLY) = 9
open("/usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 10
Traceback (most recent call last):
Cette question (ImportError: PyCapsule_Import could not import module "pyexpat") a suggéré que l'on Renommez la bibliothèque, ou de le réinstaller. J'ai essayé ces deux choses et aucun n'a fonctionné. Quelqu'un a-t-il une idée?
EDIT: Depuis la publication, conformément aux instructions de forax, j'ai essayé de définir LD_LIBRARY_PATH, fait une importation manuelle de pyexpat dans un shell python, et jeté un oeil à la sortie de ldd pour pyexpat.
importation manuelle de pyexpat
Python 2.7.9 (default, Jun 29 2016, 13:08:31)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyexpat
.
Courir ldd
sur la bibliothèque pyexpat
[[email protected]:~ ] $$ ldd /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so
linux-vdso.so.1 (0x00007ffc069da000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f7214382000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7214165000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7213db9000)
/lib64/ld-linux-x86-64.so.2 (0x000055fe01ce4000)
Ressemble cette question: [Erreur d'importation pyexpat lors de l'exécution aws cli] (https://stackoverflow.com/q/25934479/ 2938861) – farax
@farax J'ai essayé de définir la variable LD_LIBRARY_PATH, mais j'ai toujours la même erreur. –