簡體   English   中英

Python在ldconfig -p確實找到的/ usr / lib / x86_64-linux-gnu中找不到庫

[英]Python not finding library in /usr/lib/x86_64-linux-gnu that ldconfig -p does find

我正在嘗試使用python模塊cairocffi。 我在x86-64上使用Debian(Stretch),所以我安裝了apt軟件包libcairo2-dev並使用pip安裝了cairocffi 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=/usr/lib/x86_64-linux-gnu python -c "import cairocffi; print('OK')"
OK

為了可伸縮性和可維護性,我不想在修改后的LD_LIBRARY_PATH上運行python來運行此腳本,但是我不知道為什么它沒有選擇動態鏈接器確實知道的庫。 我想念什么?

原來,我的/usr/lib有一個舊的libpixman.so(這是libcairo的依賴項),而libcairo的安裝文件夾中有一個更新的libpixman。 因此,當LD_LIBRARY_PATH設置為libcairo的位置時,它將選擇有效的新libpixman,而當未設置它時,它將選擇舊的libpixman。 /usr/lib刪除舊的libpixman可以修復所有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM