154 votes

Pourquoi Python ne peut pas trouver les objets partagés qui sont dans des répertoires dans sys.path ?

J'essaie d'importer pycurl :

$ python -c "import pycurl"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: libcurl.so.4: cannot open shared object file: No such file or directory

Maintenant, libcurl.so.4 est en /usr/local/lib . Comme vous pouvez le voir, c'est en sys.path :

$ python -c "import sys; print(sys.path)"
['', '/usr/local/lib/python2.5/site-packages/setuptools-0.6c9-py2.5.egg', 
'/usr/local/lib/python25.zip', '/usr/local/lib/python2.5', 
'/usr/local/lib/python2.5/plat-linux2', '/usr/local/lib/python2.5/lib-tk', 
'/usr/local/lib/python2.5/lib-dynload', 
'/usr/local/lib/python2.5/sitepackages', '/usr/local/lib', 
'/usr/local/lib/python2.5/site-packages']

Toute aide sera grandement appréciée.

1voto

ScutterKey Points 22

J'utilise python setup.py build_ext -R/usr/local/lib -I/usr/local/include/libcalg-1.0 et le fichier .so compilé se trouve dans le dossier de construction. vous pouvez taper python setup.py --help build_ext pour voir les explications de -R et -I

1voto

EuGENE Points 600

Pour moi, ce qui fonctionne ici est d'utiliser un gestionnaire de version tel que pyenv Je vous recommande vivement de gérer vos environnements de projet et les versions des paquets séparément de ceux du système opérationnel.

J'ai eu cette même erreur après une mise à jour de l'OS, mais elle a été facilement corrigée avec pyenv install 3.7-dev (la version que j'utilise).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X