news 2026/10/5 7:34:46

PyQt5报错:找不到Qt平台插件“windows”?完整排查与修复指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PyQt5报错:找不到Qt平台插件“windows”?完整排查与修复指南

写 PyQt5 界面程序,最让人血压升高的时候,不是界面布局对不齐,也不是槽函数触发逻辑写错,而是你满怀信心地python main.py,结果控制台啪一下弹出一行冰冷刺骨的提示:

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be initialized.

紧接着进程退出,连个窗口的影子都没看到。

这个报错几乎每个 PyQt5 玩家都撞过:刚装完环境跑 demo 的、把程序放到别的机器上的、从 PyCharm 切到命令行运行的、或者拿 PyInstaller 打好 exe 发给朋友的——版本不同、触发场景不同,但报错信息长得都差不多。我最早遇到它时,查了一整晚英文论坛,试了十几种办法,最后才发现是环境变量指向的问题。这一篇不是教科书式的错误列表,是把我踩过的坑、排查的思路、真正能落地的修复步骤全部捋一遍,你照着顺序走,大概率十分钟内能解决。

1. 先搞清楚“无法初始化Qt平台”到底在报什么错

1.1 这个报错信息的完整含义

先看最经典的一段错误输出(Windows 环境):

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

把这句话拆开翻译成大白话:Qt 是跨平台 GUI 框架,但它真正调用系统窗口、绘制界面时,依赖一个叫“平台插件”的动态链接库。Windows 上需要qwindows.dll,Linux 上需要qxcb.so,macOS 上需要qcocoa.dylib。应用程序启动的那一刻,Qt 内部会去某个目录里找这些文件,找不到就认为平台无法初始化,干脆拒绝启动。

注意一个细节:报错里冒号后面跟着两个引号,"windows" in ""。后面这对空引号很关键——它是 Qt 实际搜索的插件目录路径,正常情况下这里会显示一个完整路径。如果它是空的,意味着程序完全没拿到插件路径信息,问题大概率出在路径配置而不是文件缺失。

1.2 为什么 Qt 要找一个“平台插件”

很多人第一次遇到这问题会懵:我都pip install pyqt5了,怎么还缺东西?

这里需要理解 Qt 的 QPA(Qt Platform Abstraction)机制。Qt 为了做到“一套代码到处跑”,没有在核心库里直接写死“调用 Win32 API”或“调用 X11”,而是把平台相关的东西抽出来做成插件。程序运行时,由QGuiApplication初始化阶段通过动态加载机制去发现并加载对应平台的插件库。如果发现机制失败,就直接放弃启动。

加载机制里最关键的两个环节:

  • 插件搜索路径:Qt 默认按“编译时内置的路径 +qt.conf配置文件里的相对路径 +QT_QPA_PLATFORM_PLUGIN_PATH环境变量指定的路径”去查找。
  • platform 插件本身的依赖:qwindows.dll不是孤军奋战,它依赖 Qt5Gui、Qt5Core 里的一堆符号。如果同目录下的 DLL 版本不配套、缺少 VC 运行库,就算找到了插件文件,加载时一样会失败。

理解了这两点,再看任何修复方案,思路就清楚很多:要么让 Qt 找到插件的正确路径,要么确认插件文件本身存在且能正常加载。后面所有解法都围绕这两件事展开。

2. 最优先排查:你是哪种触发场景

同样的报错,出现在不同环境下,处理方向差别很大。我见过有人一上来就重装 PyQt5,结果装了三遍还是报错,原因是压根没定位到自己的触发场景。先花两分钟分清你是下面哪一类。

2.1 场景A:直接用命令行运行报错

这是最常见的情况。你刚按教程装好 Python 和 PyQt5,写了一个测试窗口:

import sys from PyQt5.QtWidgets import QApplication, QLabel app = QApplication(sys.argv) label = QLabel("Hello PyQt5") label.show() sys.exit(app.exec_())

然后在项目目录执行:

python demo.py

直接弹出Could not find the Qt platform plugin "windows"。

这种场景下,首先要怀疑的是:pip 把 PyQt5 装到哪个 site-packages,插件库有没有一起装进去。特别是你电脑里同时存在多个 Python 版本、或者用虚拟环境时,python命令对应的解释器和pip安装到的目标环境是不是同一个,最容易出错。你可以在 Python 里验证一下:

python -c "import PyQt5; print(PyQt5.__file__)"

如果这个路径和你执行pip show PyQt5输出的Location不一致,那就是典型的“装错环境”问题。

2.2 场景B:PyCharm 里能跑,命令行跑不了

这个现象很有迷惑性。你在 PyCharm 里点了绿色三角形,窗口正常弹出来;但打开终端敲同样的命令,立刻报错。

原因大概率是:PyCharm 默认使用项目配置的虚拟环境(venv / conda),并且会自动把虚拟环境的Scripts目录和site-packages路径注入到sys.path。你在终端里用的可能是全局 Python,它压根没装 PyQt5,或者装的是另一个版本。

判断方法是看 PyCharm 右下角解释器路径,然后在命令行用同样的解释器运行:

D:\venv\myproject\Scripts\python.exe demo.py

如果这样能跑通,那就不是代码问题,而是没有激活虚拟环境。激活后问题自然消失。

2.3 场景C:PyInstaller 打包后的 exe 报错

打包场景是另一个“重灾区”。你本地用 IDE 跑得好好的,一打成 exe,发给别人,刚双击就来这么一出。

这时的报错原因通常有两个方向:

  • PyInstaller 打包时没有把PyQt5/Qt/plugins/platforms/qwindows.dll收进包里;
  • 收进去了,但 exe 在运行时找不到这个目录。

前者跟 PyInstaller 版本、hook 处理有关,后者跟解压临时目录、qt.conf配置有关。这一块后续会专门讲。

先按以上三种场景对号入座,能省掉很多瞎折腾的时间。下面进入真正的解决环节。

3. 核心解决方案:五类实操手段逐个试

我按“优先级从高到低、从简单到复杂”的顺序整理了一套修复流程。不要跳着试,按顺序大概率在前面几步就解决问题了。

3.1 环境变量大法:设置 QT_QPA_PLATFORM_PLUGIN_PATH

这是网上出现频率最高的方法,也是最有效的验证手段。核心思路是手动告诉 Qt:“你的平台插件在这里,别瞎找。”

先确认插件实际路径。Windows 下,如果 PyQt5 安装在默认位置,通常是这样:

D:\Python39\Lib\site-packages\PyQt5\Qt5\plugins\platforms\qwindows.dll

有些 PyQt5 版本布局是:

D:\Python39\Lib\site-packages\PyQt5\Qt\plugins\platforms\qwindows.dll

注意Qt5和Qt的目录名差异。你可以用文件资源管理器打开 site-packages,找到platforms文件夹,确认里面的qwindows.dll存在。确认好路径后,在启动程序前设置环境变量。

Windows 命令行临时设置:

set QT_QPA_PLATFORM_PLUGIN_PATH=D:\Python39\Lib\site-packages\PyQt5\Qt5\plugins python demo.py

Linux / macOS 终端运行:

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/python3/dist-packages/PyQt5/Qt5/plugins python3 demo.py

如果这样能跑起来,说明之前的默认搜索路径没生效,你只是手动补上了缺口。

永久生效的话,可以在 Windows 系统环境变量里新增同名变量,或者在项目启动脚本里用代码提前设置:

import os os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = r"D:\Python39\Lib\site-packages\PyQt5\Qt5\plugins"

注意os.environ的设置必须在创建QApplication之前,这一点非常关键。我在实际项目里见过有人放在QApplication实例化之后设置,结果报错依旧,因为 Qt 在构建 app 对象时就已经开始找插件了。

3.2 创建 qt.conf:一劳永逸的配置方案

环境变量好用,但有个缺点:它是“外在”的,换了机器、换了解释器还得重新设置。更稳妥的做法是在项目目录或者主程序同级目录放一个qt.conf文件,Qt 启动时自动读取它来定位插件路径。

在 Windows 上,这个文件就放在你的.py入口文件旁边,内容如下:

[Paths] Plugins = D:/Python39/Lib/site-packages/PyQt5/Qt5/plugins

当然,把绝对路径写死到配置文件里,换个环境还要改。更好的做法是配合sys.path动态生成相对路径:

import sys, os from PyQt5.QtCore import QLibraryInfo if __name__ == "__main__": plugin_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "plugins") os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = plugin_path # 或者写入 qt.conf

这里有个小坑:如果填相对路径,Plugins = plugins,Qt 会以当前工作目录(CWD)为基准去找./plugins。但你的 Python 脚本所在的目录和 CWD 不一定一致,比如在项目根目录执行python subdir/main.py时,CWD 是项目根目录,plugins文件夹却在subdir/plugins,这就找不到了。

所以最稳妥的方案是:在入口脚本最开始,用代码动态计算插件路径,然后同时设置环境变量和qt.conf。我自己的做法通常是这样:

import os import sys def fix_qt_platform_path(): """ 动态计算 PyQt5 插件路径并写入环境变量。 必须在 QApplication 创建之前调用。 """ try: import PyQt5 # 兼容 PyQt5 5.15+ 的目录布局 base_dir = os.path.dirname(PyQt5.__file__) candidates = [ os.path.join(base_dir, "Qt5", "plugins"), os.path.join(base_dir, "Qt", "plugins"), os.path.join(base_dir, "plugins"), ] for path in candidates: platforms = os.path.join(path, "platforms") if os.path.exists(platforms): os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = path return except Exception: pass fix_qt_platform_path()

这个函数在项目初始化时先跑一遍,基本能覆盖绝大多数虚拟环境和多 Python 版本的场景。

3.3 直接拷贝插件目录到工程里

有一些极端情况,比如程序要部署到一台完全没装 Python 的机器上,或者要作为一个绿色版工具分发,这时候与其纠结环境变量,不如直接把插件目录整个搬到项目里。

操作思路:找到 site-packages 下的PyQt5\Qt5\plugins文件夹,把它整个复制到你的项目根目录下,保持内部结构不变,确保最终路径是:

你的项目文件夹\plugins\platforms\qwindows.dll

然后在入口脚本里设置:

import os os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.path.join(os.path.dirname(os.path.abspath(__file__)), "plugins")

也可以配合qt.conf:

[Paths] Plugins = plugins

这种方式的好处是,整个项目自带运行时依赖,不管换到哪台机器,只要系统有基本的 VC 运行库,就能直接跑起来。代价是项目体积变大,plugins文件夹里除了platforms还包含 imageformats、styles、tls 等一堆子目录,如果打包工具没有做精简,几 MB 到几十 MB 都有可能。

如果想精简体积,platforms目录下只要保留qwindows.dll,再补一个imageformats里的qjpeg.dll和qgif.dll通常够用。但我不建议一开始就去掉其他目录,等确认程序稳定运行了再逐个删,踩过坑的人都知道“优化过早”在 GUI 程序里多致命。

3.4 PyInstaller 打包场景的精确处理

打包后报错,和源码跑报错,问题性质不太一样。这里单独拆开讲。

先看打包命令。我强烈建议用这样的方式:

pyinstaller --noconfirm --windowed --onedir --name MyApp --collect-all PyQt5 main.py

--collect-all PyQt5会把 PyQt5 包下的所有数据文件、动态库、子模块全部收集进来,避免遗漏 plugins。这是新版 PyInstaller 处理 PyQt5 最省心的方式之一。老版本的 PyInstaller 还需要手动写 hook,现在基本不用了。

打完包后,在dist/MyApp目录下,正常情况下应该能看到:

dist\MyApp\_internal\PyQt5\Qt5\plugins\platforms\qwindows.dll

如果这个文件存在但还是报错,重点检查 exe 同级目录有没有qt.conf。PyInstaller 生成的程序在运行时,会先解压到临时目录_MEIPASS,如果qt.conf和 exe 放置在一起,Qt 可以依据相对路径正确解析插件目录;qt.conf缺失时,它会退回环境变量和内置路径。

可以在打包后手动在dist/MyApp下创建一个qt.conf:

[Paths] Plugins = ./_internal/PyQt5/Qt5/plugins

但注意,这个内容在新版 PyInstaller 的解压结构下不一定对得上。一个更通用的技巧是在你的入口 Python 代码里,提前对 PyInstaller 的临时目录做兼容处理:

import os import sys base_dir = getattr(sys, "_MEIPASS", os.path.dirname(os.path.abspath(__file__))) # 尝试多个可能的插件路径 candidates = [ os.path.join(base_dir, "PyQt5", "Qt5", "plugins"), os.path.join(base_dir, "PyQt5", "Qt", "plugins"), os.path.join(base_dir, "platforms", ".."), # 某些 hook 会直接平铺 ] for p in candidates: if os.path.exists(os.path.join(p, "platforms")): os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = p break

这段代码放在程序入口最前面,能让 exe 在打包后的复杂目录结构里依然精准找到插件。

另外提醒一句:--windowed模式下,程序没有控制台,报错信息是看不到的。排查期间建议先改用--console打包,把错误信息打印出来再判断,能免掉不少“盲修”的痛苦。

3.5 OpenGL 相关问题的特殊处理

“无法初始化Qt平台”有一个特别隐蔽的变体,它藏在 Opengl 加载失败里。这个问题在云服务器、远程桌面、虚拟机、老电脑上尤其常见。表现是:程序没有报 platform plugin 找不到,但界面黑屏、卡死、崩溃,或者干脆报类似Could not initialize OpenGL的错误。

Qt 5.15 之后的版本,Windows 上默认的渲染后端是desktopOpenGL,如果系统显卡驱动太老或者不支持,会导致窗口创建失败。一个非常实用的临时验证方法,是在代码最前面设置:

import os os.environ["QT_OPENGL"] = "software"

这样 Qt 会使用软件渲染,避开显卡驱动问题。如果这个设置能让程序正常显示,再考虑后续的优化方案:升级显卡驱动,或者针对目标机器做不同的渲染后端适配。

还有一种做法是干脆强制 Qt 使用minimal或offscreen插件来做测试,比如在 Linux 服务器上跑无界面自动化时:

export QT_QPA_PLATFORM=offscreen python main.py

这不会显示窗口,但能验证业务逻辑是否正常,排除掉平台插件的干扰。适合排查“到底是我的代码问题还是显示环境问题”。

4. 进阶:多种 Python 环境与嵌入式场景的坑

基础解法能覆盖 80% 的问题,但剩下那 20% 最容易让人心态爆炸,因为它们往往是环境叠加造成的。

4.1 多 Python 版本共存导致路径指向错乱

装了 Python 3.8、Python 3.10,还开了一堆 venv、conda 环境,这是现代 Python 开发者的常态。问题就出在:你在 A 环境里装 PyQt5,却在 B 环境下运行代码。

我遇到过一种典型情况:pip install PyQt5显示安装成功,但打开 Python 交互式环境执行import PyQt5却报ModuleNotFoundError。这是因为 Windows 下pip和python可能分别指向不同安装目录。排查时,用这两条命令确认:

where python where pip

或者用 Python 内置方式:

python -m pip show PyQt5 python -c "import sys; print(sys.path)"

如果python -m pip show PyQt5能正常显示版本、位置,就说明安装没问题。运行报错的话,检查QT_QPA_PLATFORM_PLUGIN_PATH是否指向了另一个 Python 版本底下的 PyQt5 插件目录。这种错位非常隐蔽——明明全局环境变量设置的路径没问题,但它指向的却是另一个版本的 PyQt5 插件,版本不同可能导致 DLL 加载失败。

解决方向:要么把环境变量改成当前解释器实际对应的路径,要么在代码里动态获取PyQt5.__file__所在的插件目录来覆盖环境变量。

4.2 嵌入式 Python / C++ 调用 Python 脚本

相比普通的运行场景,嵌入式场景要复杂一层:你的 Qt 程序主体可能是 C++ 写的,里面嵌入了一个 Python 解释器,通过 PyQt5 创建窗口。这种情况下,QApplication可能已经被 C++ 侧初始化了,Python 侧再创建QApplication时会出各种奇怪问题。

典型报错不再是找不到平台插件,而是:

QApplication instance already exists

或者:

qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "..." even though it was found.

遇到这情况,基本可以放弃“从 Python 侧找补”的思路。正确做法是在 C++ 侧启动时,确保 Qt 插件路径已经被正确设置。通常是在main函数最开头调用QCoreApplication::addLibraryPath或者设置环境变量:

#include <QCoreApplication> #include <QDir> int main(int argc, char *argv[]) { // 在创建 QApplication 之前设置 qputenv("QT_QPA_PLATFORM_PLUGIN_PATH", QDir::current().filePath("plugins").toUtf8()); QApplication app(argc, argv); // ... }

Python 侧就不要重复做那些环境变量设置了,否则容易搞出两个 Qt 实例打架的局面。如果纯 Python 脚本完全独立运行没问题,一嵌入就报错,优先检查 C++ 进程里是否已经有 Qt 环境。

4.3 插件文件本身损坏或版本不匹配

这种情况比较少见,但也不是没有。比如,你手动从网上下载过某个版本的qwindows.dll覆盖了原来的文件,或者 PyQt5 升级时部分文件没有正确更新,都会导致加载失败。

区分方法:用 Qt 自带的工具检查依赖。Windows 下可以用dumpbin或Dependencies工具查看qwindows.dll依赖的 DLL 是否存在。更省事的做法是直接重装 PyQt5,让所有文件恢复原状:

pip uninstall PyQt5 PyQt5-Qt5 PyQt5-sip -y pip install PyQt5

重装完成后,重新确认插件路径。我见过有人在网上找“绿色版 PyQt5 插件包”往自己项目里塞,结果 DLL 是从另一个 Qt 版本里拆出来的,最后花了两小时才发现是版本冲突。这里也劝一句,不要图省事手动从非官方渠道下载单个插件文件,代价往往大于收益。

5. 快速排查对照表与独家调试技巧

整理成表,遇到问题直接对号入座,能省很多事。

报错特征可能原因优先处理方案
Could not find the Qt platform plugin "windows" in ""环境变量未设置或指向错误动态设置QT_QPA_PLATFORM_PLUGIN_PATH
Could not find the Qt platform plugin "windows" in "D:\xxx\plugins"指定路径下没有 platforms 目录检查qwindows.dll是否存在于路径中
打包 exe 报错插件未打入包内或路径偏移使用--collect-all PyQt5重新打包
虚拟机/远程桌面运行黑屏或崩溃OpenGL 渲染后端问题设置QT_OPENGL=software
Python 环境多但装错位置pip 与 python 指向不一致统一用python -m pip安装
C++ 嵌入 Python 报错主程序与 Python 侧 Qt 冲突在 C++ 侧提前设置插件路径
Linux 下报xcb相关错误缺少 xcb 库安装libxcb-cursor0或libxcb-xinerama0等依赖
双击 py 文件报错,命令行正常文件关联的 Python 版本不对检查.py文件默认打开方式

再分享几条独家经验,这些在官方文档里基本找不到:

第一个小技巧:验证插件路径时,不要光看目录存在,要看platforms/qwindows.dll是否存在。环境变量设置的路径应该指向plugins的上一级,也就是包含platforms子目录的那个文件夹,而不是platforms本身。很多人在这里失手,路径写到了...\plugins\platforms,结果 Qt 又在它下面找了一层platforms\platforms,自然还是找不到。

第二个小技巧:调试阶段,给自己加一段“现场取证”代码,把 Qt 内部认为的插件路径打印出来:

from PyQt5.QtCore import QLibraryInfo print(QLibraryInfo.location(QLibraryInfo.PluginsPath))

这段代码必须在QApplication创建之后执行,否则打印结果可能是默认值。如果输出的路径和qwindows.dll实际所在路径不一致,环境变量配置一定有偏差。

第三个小技巧:善用QT_DEBUG_PLUGINS环境变量。设置它为1之后,Qt 会输出加载每个插件的详细日志,包括尝试了哪些路径、插件依赖为什么加载失败。输出信息里会有类似Cannot load library的提示。这个变量是排查插件问题最强大的隐形武器,网上很多从截图里找原因的求助帖,其实自己开个调试输出就能看到答案:

set QT_DEBUG_PLUGINS=1 python demo.py

实测下来,90% 的“找不到平台插件”问题,开了这个调试开关后都能立刻看到究竟是路径不对,还是某个 DLL 加载失败。比自己瞎猜靠谱得多。

多提一句和 “PySide6” 相关的坑:经常有朋友在 PyQt5 和 PySide6 之间横跳,两套库装在同一环境里,它们的插件目录不同(PySide6 的插件目录是PySide6/Qt/plugins)。如果环境变量写死了某个路径,切到另一个库运行时就会踩坑。所以代码里不要写死绝对路径,最好基于当前导入的库去计算。

我个人在实际项目里,现在已经形成固定习惯:新建任何 PyQt5 项目,第一件事就是在入口文件放那段动态设置插件路径的函数,不管在 IDE、命令行、打包后都先调用它。这看起来只是多写了几行代码,但能帮你省下无数次“换个电脑跑不了”的尴尬。后面你要是遇到更诡异的界面显示问题,也记住一个原则:先把渲染后端(OpenGL)和平台插件两个维度分开排查,别混在一起找原因,思路清晰了,问题就解决了一半。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 7:34:45

Spring Boot图书馆管理系统毕设全流程:从数据库设计到事务并发

又到毕设季&#xff0c;图书馆管理系统这个题目在计算机毕业设计里属于“出镜率顶流”级别的存在。Java、Spring Boot、管理系统这几个关键词一组合&#xff0c;看起来像是经典的CRUD练习&#xff0c;但真上手做你会发现&#xff0c;把一张图书借阅流程跑通、把并发场景处理好、…

作者头像 李华
网站建设 2026/10/5 7:33:39

网络安全证书全解析:从CISP到OSCP,破解证书无用论与职业焦虑

一名合格的网络安全从业者&#xff0c;手里没两张拿得出手的证书&#xff0c;简历在HR那里往往撑不过三秒。这个行业太吃证书了&#xff0c;不是歧视技术&#xff0c;而是因为安全这个行当本来就建立在信任之上&#xff0c;证书就是最直观的信任背书。不管你是刚入行的小白&…

作者头像 李华
网站建设 2026/10/5 7:33:39

Defender 排除项配置指南:解决误报与性能瓶颈

很多人第一次接触 Defender 的排除项&#xff0c;都是因为一个让人抓狂的场景&#xff1a;编译器在生成代码&#xff0c;Defender 实时保护把中间文件当恶意软件删了&#xff1b;或者某个老旧的内部工具每次启动都被拦截&#xff0c;业务部门直接打电话投诉&#xff1b;又或者全…

作者头像 李华
网站建设 2026/10/5 7:33:29

蝴蝶分类数据集20类:用PyTorch跑通图像分类全流程

简介&#xff1a;蝴蝶分类数据集包含20个常见蝴蝶物种类别&#xff0c;适用于图像识别、深度学习模型训练、生物多样性研究及教学演示等场景&#xff0c;可帮助研究者与学习者快速获得带标注的图像样本。整个压缩包共1870个文件&#xff0c;大小约60.96MB&#xff0c;主体为186…

作者头像 李华
网站建设 2026/10/5 7:33:03

Cesium结合Heatmap.js实现动态洪水模拟:无需GLSL的轻量方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 7:32:38

KeyarchOS性能基线实战:UnixBench完整跑分指南

前阵子给一批新服务器做上线前的性能基线&#xff0c;几台同款机器装的是浪潮信息KeyarchOS&#xff08;KOS&#xff09;。业务同学反馈说某些批处理任务偶尔变慢&#xff0c;我需要先确认问题出在系统配置还是硬件本身&#xff0c;于是第一件事就是把UnixBench拉起来跑了一轮。…

作者头像 李华