我有一个带有PyQT的Dockerfile,如下所示
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
但我的错误越来越少了
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代码
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()那么如何解决下面的错误呢?
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发布于 2022-05-07 04:57:25
您必须在Docker映像中安装libnss3。
将apt-get install libnss3添加到Dockerfile中的安装命令中应该可以做到这一点。
https://stackoverflow.com/questions/72149564
复制相似问题