Python 未从 PyPi 包中找到库(因此,dll)

标签 python pyqt5

我正在使用 PyQt5 库并尝试使用 pylupdate:
from PyQt5.pylupdate_main import main
这给了我错误:

ImportError: libQt5Xml.so.5: cannot open shared object file: No such file or directory



而文件位于 /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 来解决此问题。 ,例如通过修改您的 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"

关于Python 未从 PyPi 包中找到库(因此,dll),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59487249/

相关文章:

python - 二进制文档分类

python - Qgridlayout 控制widget的大小

python - 检查非索引列是否在 Pandas 中排序

python - python中的*是什么意思?

python - 用钢笔在 Canvas 上删除

python - QTextEdit 上的滚动条样式(使用自定义图像)

python - QStyledItemDelegate 水平截断文本并且不添加水平滚动条

python - 使用 pyqtgraph 和线程进行实时绘图

installation - 如何在 travis 上安装 python3 和 pyqt5

python - pywintypes.com_使用 Python 打开 Excel 时出错