1

ドキュメントによると、

Linuxでは、ライブラリをロードするために拡張子を含むファイル名を指定する必要があるため、属性アクセスを使用してライブラリをロードすることはできません。dllローダーのLoadLibrary()メソッドを使用するか、コンストラクターを呼び出してCDLLのインスタンスを作成してライブラリをロードする必要があります。

外部で開発された一連のPythonスクリプトを使用しています。それらはかなり標準的なlib(liblzma)を必要とし、パス名を介してそれをロードするためにLoadLibraryfromを使用します。ctypes私の問題は、これらのスクリプトをいくつかの異なるLinuxインストールで実行する必要があり、将来的にはさらに実行する必要があることです。共有ライブラリの完全なファイル名とそのliblzma場所は、システムごとに異なります。さまざまなlibバージョンに対してテストを行いましたが、競合は見つかりませんでした。

私が本当に必要としているのは、適切な名前をに渡すために、インストールされているライブラリのベース名を決定する方法LoadLibraryです。

ldconfig -p既存のライブラリを印刷するために使用し、出力を解析してライブラリ名を見つけることを検討しました。他のアイデアはありますか?

私は確かにここで私の要素から少し外れています。問題のあるスクリプトは、より大きなプロジェクトの必須部分にすぎません。

4

1 に答える 1

2

ライブラリがローダー検索パスにある限り、相対名で指定できます。

$ ls /usr/lib64/libXt.*
/usr/lib64/libXt.so.6.0.0

>>> ctypes.CDLL('libXt.so.6.0.0')
<CDLL 'libXt.so.6.0.0', handle 26b72b0 at 2723c90>
于 2012-07-16T18:45:20.960 に答える