1

extractorを介してpython 2.7でモジュールを使用していますpip install extractor。私は自作を使用して OS X を使用しており、以前にhomebrew install libextractor. これにより、拡張子が .a および .dylib のファイルが /usr/local/lib に作成されます。(GNU libextractor)

extractor.py の 36 行目あたりに、次のコードがあります。

試す:
   #共有オブジェクトファイルのロード
   libextractor = cdll.LoadLibrary('libextractor.so.3')
OSError を除く:
   libextractor = cdll.extractor

PythonシェルからOSError: dlopen(extractor, 6): image not foundしようとすると、取得しています。import extractor

これは、.so.3 ファイルがなく、モジュールにハードコードされていることが原因のようです。しかし、エラーは try ブロックではなく、except ブロックから発生しています。

このエラーは libextractor.so.3 のハードコーディングによるものですか? もしそうなら、どうすれば Python に正しいライブラリをロードするように指示できますか? その値を、存在するさまざまなファイル (.a、.dylib) に置き換えてみましたが、うまくいきませんでした。

4

2 に答える 2

2

それが機能する場合は、ctype.CDLL("libextractor") を使用して、ctypes に適切な拡張子を認識させる必要があります。残念ながら、OS 固有の拡張機能はありません。

ctypesそれが機能する場合はfind_library、それを使用します。悲しいことに、それは外部プログラムに依存しているため、小規模または奇妙なシステムではランタイム ヒットや破損が発生します。

他のプロジェクトは先に進み、os.uname() に基づいて拡張機能をハードコーディングしました。必要に応じてそれを行います。

PS except 句はいくつかの奇妙な回避策です。実際には、 which がなくても機能しないものと同じまたは拡張機能ctypes.cdll.fooと同等です。ctypes.cdll.__getattr__("foo")ctypes.CDLL("foo")lib-

于 2014-03-18T17:01:06.900 に答える
0

次の手順に従ってみましたか:

http://www.gnu.org/software/libextractor/manual/html_node/Preparation.html

于 2014-03-18T16:50:46.433 に答える