2013-12-14 10 views
9

新しいUbuntu/Debianのバージョンでは、libpython2.7.so/usr/lib/i386-linux-gnu/libpython2.7.soまたは/usr/lib/x86_64-linux-gnu/libpython2.7.soなどです。以前は、アーキテクチャに関係なく/usr/lib/libpython2.7.soにありました。私は他のディストリビューションをチェックしていません。 Pythonでlibpython2.7.soのパスを見つけるにはどうすればよいですか?ディストリビューションから独立したlibpythonのパス

+0

あなたは 'locate libpython'などを探していますか? – janos

+0

'ldd/usr/local/bin/python'はあなたに何を表示しますか? – Arovit

+0

'locate libpython'はちょうどこの単一のファイル以上のものをたくさん見つけます。プログラムでパスを見つけてcmakeに供給したいのです。 'ldd/usr/local/bin/python'は' No such file or directory'を与え、 'ldd/usr/bin/python'はいくつかのライブラリファイルを与えますが、' libpython2.7.so'はそれらの一つではありません。 – Psirus

答えて

0

私はあなたがこのファイルとリンクしたいと思っています。 Pythonは通常コンパイルに役立つようにpkgconfig情報とともにインストールされます。特に.soファイルの場合は、pkg-config --libs python-2.7を使用してください。パイソンから:

import subprocess 
subprocess.check_output(["pkg-config", "--libs", "python-2.7"]) 

示す唯一のフラグが-lpython2.7ある場合は、リンカがそのライブラリを探しているデフォルトの場所を確認するために/etc/ld.so.confを読んで検討する必要があります。

7

pkg-configを使用することは最良の選択肢ではありません。異なるインストールのPythonを区別せず、システムインストールのみを返します。 Python実行可能ファイルを使ってlibpythonX.Y.soの場所を発見する方がよいでしょう。 Pythonの内部から

from distutils import sysconfig; 
    print sysconfig.get_config_var("LIBDIR") 

またはMakefileの内部:

PYTHON_LIBDIR:=$(shell python -c 'from distutils import sysconfig; print sysconfig.get_config_var("LIBDIR")') 

これはどのようなPythonの実行ファイルから位置が$PATHで最初に発見されますので、複数のPythonのインストールがある場合に動作しますシステム上で

これを指摘するためにNiall Fitzgeraldに寄稿しました。

+6

'/ usr/lib'にありますが、'/usr/lib/x86_64-linux-gnu'にあります。 –

+1

は私にとってはうまくいきませんでした。 Marco Sullaと同じ問題が指摘している。 –

+0

同じ問題。 :(実際にこれを行う方法があったらいいのに) – Alec

関連する問題