私はpythonモジュールcairocffiを使用しようとしています。私はx86-64でDebian(Stretch)を使うので、aptパッケージlibcairo2-dev
をインストールし、pipを使ってcairocffi
pythonパッケージをインストールしました。これはすべてうまくいった。しかし、私はそれをインポートしようとすると、それはモジュールをロードするために失敗します。ldconfig -pが見つける/ usr/lib/x86_64-linux-gnuにPythonがライブラリを見つけません
$ python -c "import cairocffi; print('OK')"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/cairocffi/__init__.py", line 46, in <module>
cairo = dlopen(ffi, 'cairo', 'cairo-2')
File "/usr/local/lib/python2.7/dist-packages/cairocffi/__init__.py", line 43, in dlopen
raise OSError("dlopen() failed to load a library: %s" % '/'.join(names))
OSError: dlopen() failed to load a library: cairo/cairo-2
しかし、ldconfig
約libcairo.so
知っているん:
$ sudo ldconfig -p | grep cairo
libpangocairo-1.0.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0
libpangocairo-1.0.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so
libcairo.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcairo.so.2
libcairo.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcairo.so
libcairo-script-interpreter.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcairo-script-interpreter.so.2
libcairo-script-interpreter.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcairo-script-interpreter.so
libcairo-gobject.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2
libcairo-gobject.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so
を、私は修正LD_LIBRARY_PATH
でのpythonを実行すると、それは動作します:私は、スケーラビリティと舞のために、このスクリプトを実行するように変更LD_LIBRARY_PATH
上でのpythonを実行する必要がありますする必要はありません
$ LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu python -c "import cairocffi; print('OK')"
OK
しかし、私はなぜそれが明らかにダイナミックリンカが知っているライブラリをピックアップしていないのか理解できません。私は何が欠けていますか?