客户端虚拟机上的此容器中有一个 .py 运行一些预测模型。
1 - 需求文件
matplotlib==3.4.3
dill==0.3.4
numpy==1.24.4
pandas==2.0.3
scikit-learn==1.1.3
scipy==1.10.1
seaborn==0.11.2
Orange3==3.34.0
PyQt5==5.15.9
2 .py 脚本(唯一的问题是 PyQt5 导入,特别是 QtCore)
import os, sys
import numpy as np
import pandas as pd
import logging
import pickle
import json
from typing import List, Union
from datetime import datetime, timedelta
# import QtCore
import PyQt5
logger = logging.getLogger("VOA.%s" % __name__)
class VOAModel():
models_folder = os.path.dirname(__file__) #get .py file folder
...
安装 docker 映像时,所有要求似乎都正常并已安装,但在执行过程时出现此错误。
此虚拟机上没有互联网连接,只有一个共享目录用于移动文件。
这个过程中没有任何GUI的东西,只是一个来自orange的机器学习模型,我不知道为什么要使用这个模块QtCore。
已经尝试过执行一些操作,例如从此库下载 .whl 文件并在容器中本地安装、更改库版本等,但没有任何效果。唯一的问题是模块的导入。
有人知道吗? 如何修复此导入 QtCore 错误?
我不熟悉 PyQt5 库,但据我所知,它是一组到底层本机 C++ 库的 Python 绑定。由于容器中不存在底层本机库(或其某些部分),您可能无法导入该 Python 模块。
为了研究这个想法,我做了以下工作:
我的机器上没有安装该本机库,但我创建了一个新的虚拟环境并执行了
pip install PyQt5
。然后我打开一个 Python 控制台并能够 import PyQt5
,但果然,import PyQt5.QtCore
失败并出现模块未找到错误。
然后,我在笔记本电脑上安装了 QT 本机库 (
brew install qt5
),清理了虚拟环境,然后再次执行了 pip install PyQt5
。现在,当我 import PyQt5.QtCore
时,我收到一个错误,但它不是模块未找到错误(它是来自 C++ 本机库内部的内容)。
那么容器内部是否存在原生QT包?