首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQT5不工作在ImportError: libsmime3.so:无法打开共享对象文件:没有这样的文件或目录

PyQT5不工作在ImportError: libsmime3.so:无法打开共享对象文件:没有这样的文件或目录
EN

Stack Overflow用户
提问于 2022-05-07 04:45:07
回答 1查看 671关注 0票数 0

我有一个带有PyQT的Dockerfile,如下所示

代码语言:javascript
复制
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN adduser --quiet --disabled-password qtuser && usermod -a -G audio qtuser
RUN apt-get update -y \
    && apt-get install alsa -y \
    && apt-get install -y python3-pyqt5 \
    && apt-get install python3-pip -y && \
    pip3 install pyqtwebengine
WORKDIR /htmltopdf

我把我的形象塑造成这样的docker build -t html-to-pdf .

然后我运行我的图像,像这样的docker run --rm -v "$(pwd)":/htmltopdf -u qtuser -it html-to-pdf python3 htmlToPdfnew.py --url https://www.w3schools.com/howto/howto_css_register_form.asp

但我的错误越来越少了

代码语言:javascript
复制
Traceback (most recent call last):
  File "htmlToPdfnew.py", line 2, in <module>
    from PyQt5 import QtWidgets, QtWebEngineWidgets
ImportError: libsmime3.so: cannot open shared object file: No such file or directory

我在我的电脑里没有那个错误。

下面是我的python代码

代码语言:javascript
复制
import sys
from PyQt5 import QtWidgets, QtWebEngineWidgets
from PyQt5.QtCore import QUrl, QTimer
from PyQt5.QtGui import QPageLayout, QPageSize
from PyQt5.QtWidgets import QApplication
import argparse


def main():
    url = ''
    parser = argparse.ArgumentParser(description="Just an example", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument("--url", help="Type url")
    args = parser.parse_args()
    config = vars(args)
    url = config['url']


    app = QtWidgets.QApplication(sys.argv)
    loader = QtWebEngineWidgets.QWebEngineView()
    loader.setZoomFactor(1)
    layout = QPageLayout()
    layout.setPageSize(QPageSize(QPageSize.A4Extra))
    layout.setOrientation(QPageLayout.Portrait)
    loader.load(QUrl(url))
    loader.page().pdfPrintingFinished.connect(lambda *args: QApplication.exit())

    def emit_pdf(finished):
        QTimer.singleShot(2000, lambda: loader.page().printToPdf("test.pdf", pageLayout=layout))

    loader.loadFinished.connect(emit_pdf)
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

那么如何解决下面的错误呢?

代码语言:javascript
复制
Traceback (most recent call last):
  File "htmlToPdfnew.py", line 2, in <module>
    from PyQt5 import QtWidgets, QtWebEngineWidgets
ImportError: libsmime3.so: cannot open shared object file: No such file or directory
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-07 04:57:25

您必须在Docker映像中安装libnss3。

apt-get install libnss3添加到Dockerfile中的安装命令中应该可以做到这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72149564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档