7
votes

Comment déterminer le chemin et le nom de la bibliothèque partagée Python?

Étant donné un python compilé sous forme de bibliothèque partagée, comment puis-je déterminer le nom et le chemin de cette bibliothèque?

La sortie que je recherche est comme "/usr/local/lib/libpython2.7.so" ou "/system/library/frameworks/python.framework/versions/2.6/python" (pour une construction-cadre sur OS X).


1 commentaires

J'ai trouvé la variable de configuration "LDLibrary"; Définissez sur "libpytHon2.7.dylib" pour un python sur mesure sur OS X et "Python.framework / Versions / 2.6 / Python" pour la version système OS X (construite en tant que cadre). Malheureusement, aucun de ceux-ci n'include pas d'informations sur le chemin complet, et je ne trouve pas de VaR approprié pour concat avec.


3 Réponses :


2
votes

Je ne sais pas comment ou si cela peut être fait dans Python lui-même, mais vous pouvez utiliser des outils standard pour trouver des dépendances de bibliothèque partagées pour l'exécutable Python.

Linux: LDD / python ou ldd $ (quel python)
Mac: otool -l / python
Windows: exécutez dépendencywalker sur python.exe


0 commentaires

1
votes

voir https://pypos.org/project/find-libpython/ xxx pré>

puis p>

python3 -m find_libpython


1 commentaires

Vous pouvez maintenant simplement exécuter python -m wind_libpython .



2
votes

avec python pur testé sur Amazon Linux après un sudo yum installer python3 xxx

édition: Notez que certaines distributions (I.e Linux et Python> = 3.8) ne contiendront plus une bibliothèque partagée, mais relieront de manière statique à LibPyThon3.8.a.


2 commentaires

Bien qu'il soit de plus en plus important, il convient de noter que le module sysconfig n'est disponible que dans Python3.2 +.


C'est ce que je cherchais. Dans mon cas, je devais utiliser 'libple' ou 'srcdir' pour obtenir le répertoire contenant la bibliothèque partagée.