簡體   English   中英

Python 未從 PyPi 包中找到庫(因此,dll)

[英]Python not finding a library (so, dll) from a PyPi package

我正在使用 PyQt5 庫並嘗試使用 pylupdate:

from PyQt5.pylupdate_main import main

這給了我錯誤:

導入錯誤:libQt5Xml.so.5:無法打開共享對象文件:沒有那個文件或目錄

雖然該文件位於/usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/

我可以通過以下方式修復:

LD_LIBRARY_PATH=/usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/:$LD_LIBRARY_PATH python -c "from PyQt5.pylupdate_main import main"

它曾經在不添加路徑的情況下工作。 如何才能做到這一點? 這是要在車輪上修理的東西嗎?


這可以使用 Docker 輕松重現:

FROM python:3.7
RUN pip install PyQt5
RUN echo $(ls /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libQt5Xml.so.5)
RUN ldd /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libQt5Xml.so.5
RUN python -c "from PyQt5.pylupdate_main import main"

ldd /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libQt5Xml.so.5輸出是這些:

 ---> Running in 6c4c1fbe5de2
    linux-vdso.so.1 (0x00007ffecb7d5000)
    libQt5Core.so.5 => /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libQt5Core.so.5 (0x00007fbc76abe000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbc76a94000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbc76910000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbc7678d000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbc76773000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbc765b2000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbc76392000)
    libicui18n.so.56 => /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libicui18n.so.56 (0x00007fbc75ef9000)
    libicuuc.so.56 => /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libicuuc.so.56 (0x00007fbc75b41000)
    libicudata.so.56 => /usr/local/lib/python3.7/site-packages/PyQt5/Qt/lib/libicudata.so.56 (0x00007fbc7415e000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbc74159000)
    libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fbc74154000)
    libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbc74033000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fbc774d1000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbc73fbf000)

這似乎是pypi(5.14.0)上當前版本的PyQt5中的一個錯誤,它沒有正確設置一些鏈接或路徑。

您可以通過手動安裝 libqt5xml5來解決此 libqt5xml5 ,例如通過像這樣修改您的 Dockerfile

 
 
 
  
  FROM python:3.7 RUN pip install PyQt5 RUN apt update && apt install -y libqt5xml5 RUN python -c "from PyQt5.pylupdate_main import main"
 
 

作為解決方法,您可以使用似乎沒有此問題的先前版本 (5.13.2)。

FROM python:3.7
RUN pip install -I PyQt5==5.13.2
RUN python -c "from PyQt5.pylupdate_main import main"

暫無
暫無

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

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