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
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/opt/python361/lib
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;Sudo /sbin/ldconfig -v
. C'est tout.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.
Pour Python 3.6, cela a été corrigé par
Sudo apt-get install libpython3.6-dev
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
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.