4 votes

ImportError : libs2.so : cannot open shared object file : Aucun fichier ou répertoire de ce type

Je construis la librairie s2-geometry-library avec un wrapper Python sur Ubuntu (14.04). Tout se passe bien jusqu'à ce que j'importe la librairie dans Python :

import s2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "s2.py", line 28, in <module>
    _s2 = swig_import_helper()
  File "s2.py", line 24, in swig_import_helper
    _mod = imp.load_module('_s2', fp, pathname, description)
ImportError: libs2.so: cannot open shared object file: No such file or directory

J'ai vérifié beaucoup de questions similaires mais aucune réponse ne fonctionne. En fait, j'ai bien libs2.so :

ldd /usr/local/lib/libs2.so
    linux-vdso.so.1 =>  (0x00007ffdfbbfe000)
    libs2cellid.so => not found
    libs2util.so => not found
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7e7cf6f000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7e7cc6b000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7e7c965000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7e7c74e000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7e7c385000)
    /lib64/ld-linux-x86-64.so.2 (0x000055b5cdcec000)

Ce qui est étrange, c'est que le texte dit libs2cellid.so y libs2util.so n'a pas été trouvée. En fait, j'ai les trois librairies dans le même dossier :

ls -l /usr/local/lib/
total 1808
-rw-r--r-- 1 root root    98096 Aug  1 12:05 libs2cellid.so
-rw-r--r-- 1 root root  1446781 Aug  1 12:05 libs2.so
-rw-r--r-- 1 root root   284388 Aug  1 12:05 libs2util.so
drwxr-xr-x 2 root root     4096 Aug  1 11:59 pkgconfig
drwxrwsr-x 4 root staff    4096 Nov 23  2016 python2.7
drwxrwsr-x 3 root staff    4096 Jul 29  2016 python3.4
drwxr-xr-x 3 root root     4096 Aug  1 11:56 site_ruby

Voici mon chemin d'accès à la bibliothèque :

$LD_LIBRARY_PATH
/usr/local/lib/libs2util.so:/usr/local/lib/libs2.so:/usr/local/lib/libs2cellid.so:/usr/lib/python2.7/dist-packages/s2/libs2.so:

Qu'est-ce qui ne va pas ? Merci.

2voto

alexandria Points 45

Puisque vous utilisez Ubuntu, le chemin du préfixe doit être /usr plutôt que /usr/local . Vous pouvez modifier cela dans s2-geometry-library/geometry/CMakeCache.txt . Réglez la valeur comme suit : CMAKE_INSTALL_PREFIX:PATH=/usr . Vous devez toujours réexécuter toutes les étapes de l'installation pour que cela fonctionne.

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