web-dev-qa-db-fra.com

libpython2.7.so.1.0: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

J'ai essayé d'exécuter un script python à partir du terminal, mais le message d'erreur suivant s'affiche:

ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

si je lance print sys.version, je reçois:

>>> import sys
>>> print sys.version
2.7.3 (default, Feb 26 2013, 16:27:39)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)]

et si je lance ldd/usr/local/bin/python

>> ldd /usr/local/bin/python
        linux-vdso.so.1 =>  (0x00007fff219ff000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003300c00000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000003300800000)
        libutil.so.1 => /lib64/libutil.so.1 (0x0000003310e00000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003300000000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003300400000)
        /lib64/ld-linux-x86-64.so.2 (0x00000032ffc00000)

Je ne comprends pas quel python ai-je? pourquoi l'exécution de ce script python à partir du terminal échoue? J'ai essayé de lancer 

export LD_LIBRARY_PATH=/usr/local/lib/python2.7/

sans chance ...

BTW - J'ai réussi à déboguer ce script dans Eclipse avec le plug-in python. Lorsque je regarde la configuration de débogage, je constate que PYTHONPATH est défini pour:

/..../Eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/pydev_sitecustomize:/..../workspace/style_checker/src:/usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.Egg:/usr/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.Egg:/usr/local/lib/python2.7:/usr/local/lib/python2.7/plat-linux2:/usr/local/lib/python2.7/lib-tk:/usr/local/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/site-packages

donc Eclipse parvient à trouver cette librairie python2.7 ... alors comment puis-je le faire avec Eclipse et depuis la ligne de commande? Qu'est-ce que je fais mal ? en utilisant CentOS6.

23
yehudahs

Essayez de trouver le fichier libpython2.7.so.1.0:

locate libpython2.7.so.1.0

Dans mon cas, cela se voit:

/opt/rh/python27/root/usr/lib64/libpython2.7.so.1.0

Puis collez la ligne /opt/rh/python27/root/usr/lib64 dans le fichier /etc/ld.so.conf

Et lancez ldconfig..__ Cela résout mon problème. Bonne chance!

37
CK.Nguyen

Vous pourriez peut-être essayer la réponse à l'adresse suivante: https://stackoverflow.com/a/1100297/3559967 . L'auteur de cette question a également déclaré que l'approche LD_LIBRARY_PATH ne fonctionnait pas pour lui, mais l'ajout du chemin de la bibliothèque à /etc/ld.so.conf et exécuter ldconfig a fonctionné.

4
Antony

Pour une raison quelconque, ces deux ont parfaitement fonctionné pour moi:

apt-get install libpython2.7
Sudo apt-get install libatlas3-base

Je les ai trouvés ici et ici

3
John Kitonyo

Ajouter à la réponse correcte:

Plusieurs questions sur la marche à suivre: Ensuite, collez la ligne/opt/rh/python27/root/usr/lib64 dans le fichier /etc/ld.so.conf.

La bonne façon de procéder consiste à ajouter un nouveau fichier dans /etc/ld.so.conf.d/ et à ajouter la ligne ci-dessus dans ce fichier. 

0
rrpr

Ce n’est pas un sujet qui m’intéresse beaucoup, mais si je comprends bien, c’est surtout pour les machines Linux (où vous compilez des binaires python) que les répertoires de bibliothèques partagées doivent être spécifiés à l’étape de compilation .

Par exemple, en suivant l'exemple lié, voici comment je m'assure que libpython2.7.so.1.0 est inclus en plus aux autres bibliothèques:

./configure --enable-shared \
        --prefix=/directory/for/Python-2.7.15 \
        LDFLAGS="-Wl,--rpath=/usr/local/lib -Wl,--rpath=/directory/for/Python-2.7.15"

Remarquez que j'installe également python dans un répertoire fixe de mon choix, via l'option --prefix. Ce n'est peut-être pas nécessaire pour vous, mais je l'ai fait pour fournir une solution au cas général où votre installation python pourrait être située n'importe où.

Avec la solution ci-dessus, je n'ai jamais besoin d'exporter LD_LIBRARY_PATH ni de désordre avec ldconfig

0
ecoe

Je l'ai résolu en utilisant "export LD_LIBRARY_PATH =" $ {WORK_PATH}/venv/lib ".

0
刘远圳