Pod nowszymi wersjami Ubuntu/Debian, libpython2.7.so
jest pod /usr/lib/i386-linux-gnu/libpython2.7.so
lub /usr/lib/x86_64-linux-gnu/libpython2.7.so
itp. Wcześniej można je było znaleźć w /usr/lib/libpython2.7.so
, bez względu na architekturę. Nie sprawdziłem innych dystrybucji. Jak znaleźć ścieżkę libpython2.7.so
z python?Niezależna ścieżka dystrybucji libpython
Odpowiedz
Zakładam, że szukasz połączenia z tym plikiem. Python jest zwykle instalowany z pkgconfig
info, aby pomóc w kompilacji przeciwko niemu. W szczególności dla pliku .so
powinieneś użyć pkg-config --libs python-2.7
. Od Pythona:
import subprocess
subprocess.check_output(["pkg-config", "--libs", "python-2.7"])
Jeśli tylko flaga pokazany jest -lpython2.7
, to może warto rozważyć czytania /etc/ld.so.conf
zobaczyć domyślne lokalizacje, w których łącznik patrzy na swoich bibliotek.
Używanie pkg-config
nie jest najlepszą opcją - nie rozróżnia różnych instalacji Pythona, zwracając jedynie instalację systemu. Lepiej jest użyć pliku wykonywalnego Python, aby odkryć lokalizację libpythonX.Y.so
.
Od wewnątrz Python:
from distutils import sysconfig;
print sysconfig.get_config_var("LIBDIR")
lub wewnątrz Makefile:
PYTHON_LIBDIR:=$(shell python -c 'from distutils import sysconfig; print sysconfig.get_config_var("LIBDIR")')
ten odkryje lokalizacją cokolwiek Python wykonywalny jest pierwszym w $PATH
a więc będzie działać, jeśli istnieje wiele instalacji Pythona w systemie.
Kredyt na Niall Fitzgerald za wskazanie tego.
Daje mi '/ usr/lib', natomiast znajduje się w'/usr/lib/x86_64-linux-gnu' –
nie działa dla mnie. ten sam problem, na jaki zwrócił uwagę Marco Sulla. –
Ten sam problem. :(Naprawdę chciałbym, aby był sposób na zrobienie tego: – Alec
Szukasz 'locate libpython' lub czegoś innego? – janos
co pokazuje twój 'ldd/usr/local/bin/python'? – Arovit
'locate libpython' znajduje się o wiele więcej niż tylko ten pojedynczy plik i chcę programowo znaleźć ścieżkę i dostarczyć ją do cmake. 'ldd/usr/local/bin/python' daje' Brak takiego pliku lub katalogu', a 'ldd/usr/bin/python' daje kilka plików bibliotecznych, ale' libpython2.7.so' nie jest jednym z nich. – Psirus