web-dev-qa-db-fra.com

python: erreur lors du chargement des bibliothèques partagées: libpython3.4m.so.1.0: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

J'ai créé un environnement virtuel python utilisant virtualenv. Après l'avoir activé, je peux voir où se trouve Python installé,

(virtualenv-test) bash-4.1 $ whereis python

python: /usr/bin/python2.6 /usr/bin/python2.6-config/usr/bin/python/usr/lib/python2.6 /usr/lib64/python2.6/usr/X11R6/bin/python2 .6 /usr/X11R6/bin/python2.6-config/usr/X11R6/bin/python/usr/bin/X11/python2.6 /usr/bin/X11/python2.6- config/usr/bin/X11/python /usr/include/python2.6 /usr/share/man/man1/python.1.gz

(virtualenv-test) bash-4.1 $ quel python

/ data/virtualenv-test/bin/python

Cependant, après avoir tapé python, j'ai reçu le message d'erreur suivant, quelle peut être la raison sous-jacente?

(virtualenv-test) bash-4.1$ python
python: error while loading shared libraries: libpython3.4m.so.1.0: cannot open shared object file: No such file or directory
19
user785099
  1. Quelqu'un a dit que cette méthode peut résoudre le problème (je ne sais pas si cela fonctionne, car je règle le problème d'une autre manière): ajoutez le chemin de lib de py3.4 à la variable d'environnement $ LD_LIBRARY_PATH Commencez par trouver le chemin de lib de python3.4 (dans le dossier qu'il a installé), comme moi est:/opt/python361/lib, puis ajoutez-le à la variable d'environnement:
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/opt/python361/lib
  1. J'ai rencontré le même problème lorsque virtualenv est utilisé avec python3.6, et je corrige la manière suivante:
    • Commencez par éditer Sudo vi /etc/ld.so.conf, ajoute le chemin lib de python3.x à ce fichier (comme moi:/opt/python361/lib), et enregistrez la modification de ce fichier conf;
    • Activez ensuite ce fichier par Sudo /sbin/ldconfig -v. C'est tout.
20
williezh

export LD_LIBRARY_PATH=[your python path to libpython3.4m.so]

libpython3.4m.so est sous votre source python à partir de laquelle vous l'avez construite.

Mettez-le dans votre .bashrc pour le définir automatiquement à la connexion.

Je ne peux pas forcer virtualenv à 3.4 sur ma machine, mais vous pouvez voir que sous lib de votre virtualenv, il ne reste qu'un tas de liens symboliques vers votre installation locale python. Je suppose que libpython3.4m.so est récupéré par l'un de ceux-ci.

7
Pobe

Pour Python 3.6, cela a été corrigé par

Sudo apt-get install libpython3.6-dev
4
A. Attia

Une autre façon consiste à ajouter LDFLAGS="-Wl,-rpath /usr/local/lib" dans configure, par exemple

./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

/usr/local/lib est le chemin où libpython3.*.so les fichiers sont en

2
buxizhizhoum

Félicitations au-dessus, pour python 3.X vous pouvez résoudre ce problème avec:

Sudo apt-get install libpython3.x-dev

Pas besoin de modifier manuellement le chemin de l'environnement.

0
Sina