彻底解决PyQt5安装卡在Building wheel for PyQt5-sip的编译问题
1. 项目概述当PyQt5-sip的构建轮子卡住时如果你正在用Python开发图形界面尤其是桌面应用PyQt5几乎是绕不开的选择。但很多开发者无论是新手还是老手都可能在第一步——安装——就栽个大跟头。最常见、也最让人头疼的场景就是当你满怀期待地敲下pip install PyQt5或pip install pyqt5-tools后命令行窗口开始飞速滚动然后突然卡在Building wheel for PyQt5-sip (pyproject.toml)...这一行光标闪烁CPU风扇狂转但进度条却纹丝不动仿佛时间静止。几分钟甚至十几分钟后最终弹出一个红色的错误堆栈宣告安装失败。这个错误信息的核心是Building wheel for PyQt5-sip (pyproject.toml) did not run successfully。它意味着pip在尝试为PyQt5-sip这个核心依赖包从源代码构建一个“轮子”wheel时失败了。PyQt5-sip是PyQt5与Python解释器之间进行通信的“粘合剂”它需要调用C编译器来编译生成二进制扩展模块。因此这个错误本质上是一个本地编译环境问题而不是PyQt5包本身有问题。这个问题之所以频繁出现尤其是在Windows系统上是因为PyQt5及其依赖的Qt库非常庞大且复杂从源码编译对系统环境要求极高。官方虽然为许多平台提供了预编译的二进制轮子.whl文件但有时由于Python版本、系统架构32位/64位或pip源的问题pip没能找到匹配的预编译包于是退而求其次试图从源码开始编译这就触发了对C构建工具链的依赖。对于开发者来说这堵墙必须跨过去。本文将彻底拆解这个问题的根源并提供从“傻瓜式”一键解决到“究极”手动编译的多种方案。我们的目标不仅是让你装上PyQt5更是让你理解背后的原理以后再遇到类似的“Building wheel”错误时能够从容应对。2. 核心问题根源与解决思路拆解要解决问题必须先理解问题。Building wheel for PyQt5-sip (pyproject.toml)这个错误提示每一个部分都透露着关键信息。2.1 关键术语解析Wheel、pyproject.toml与构建过程1. Wheel是什么你可以把Wheel.whl文件想象成一个已经打包好的“软件罐头”。对于包含C/C扩展的Python包如PyQt5-sip、NumPy从源码安装需要本地有编译器过程慢且容易出错。而Wheel是预编译好的二进制分发格式包含了所有必要的平台特定二进制文件。pip install时如果能直接下载到匹配的Wheel就省去了编译步骤安装速度极快成功率接近100%。Building wheel就是指在本地现场制作这个“罐头”。2. pyproject.toml是什么这是现代Python项目的配置文件取代了旧的setup.py。它里面定义了项目的元数据、依赖关系以及如何构建这个项目。当pip看到这个文件并且没有找到现成的Wheel时它就会根据pyproject.toml中指定的构建后端如setuptools、flit和构建要求来触发本地构建流程。对于PyQt5-sip其pyproject.toml文件要求系统具备C编译能力。3. 为什么构建会失败构建失败的根本原因在于缺失构建所需的工具链或依赖库。在Windows上这通常意味着没有安装Microsoft Visual C Build Tools。这是最核心的原因。Python的C扩展在Windows上主要依赖MSVC编译。已安装的MSVC版本与Python版本不匹配。例如Python 3.8 需要 MSVC 2019如果你只装了MSVC 2015就会失败。系统环境变量如PATH未正确配置导致pip找不到编译器。磁盘空间不足、权限问题或网络超时等次要原因。2.2 解决策略总览从易到难的四条路径面对这个问题我们有四条清晰的解决路径推荐按顺序尝试路径一使用预编译的Wheel文件最推荐核心思想绕过本地编译直接使用别人编译好的“罐头”。这需要找到与你的Python版本和系统架构完全匹配的PyQt5及其依赖的.whl文件。优点简单、快速、几乎零失败。缺点需要手动查找和下载文件。路径二配置国内镜像源并指定平台次推荐核心思想让pip从国内的镜像服务器如清华、阿里云寻找预编译包并明确告诉pip你需要哪个平台的包。优点一行命令解决如果镜像站有对应包则成功率极高。缺点并非所有包的所有版本在镜像站都有预编译轮子。路径三安装完整的编译环境通用但繁琐核心思想补齐缺失的“工具”让本地编译能够顺利进行。即安装Microsoft Visual C Build Tools。优点一劳永逸解决所有需要编译的Python包安装问题。缺点安装包体积巨大几个GB耗时较长。路径四使用conda安装替代方案核心思想换用conda这个强大的包和环境管理器。Conda的仓库里包含了大量预编译好的二进制包及其复杂的非Python依赖如Qt库管理起来非常省心。优点环境隔离好依赖管理极其强大特别适合科学计算和GUI开发。缺点需要安装另一个工具包体积通常更大。注意对于绝大多数Windows用户路径一手动下载Wheel是解决此问题最快、最直接的方法。下文将首先详细讲解这种方法。3. 方案一详解手动下载与安装预编译Wheel这是我最推荐的方法实测在90%以上的场景下都能快速解决问题。整个过程就像拼图关键在于找到所有严丝合缝的“碎片”。3.1 第一步确定你的“拼图”规格在下载任何文件之前你必须明确三个关键信息Python版本例如3.9,3.10,3.11。系统架构是32位win32还是64位amd64。现代电脑基本都是64位。操作系统通常是Windows。如何查询 打开命令提示符CMD或PowerShell输入以下命令python -c import sys; print(fPython {sys.version_info.major}.{sys.version_info.minor}) python -c import struct; print(64位 if struct.calcsize(P)*8 64 else 32位)记下输出结果比如Python 3.9和64位。3.2 第二步寻找可靠的Wheel文件下载源不要随意在搜索引擎里找.whl文件最可靠的来源是官方PyPI仓库的镜像站如清华大学开源软件镜像站、阿里云镜像站等。它们同步了PyPI上的包包括预编译的Wheel。Unofficial Windows Binaries for Python Extension Packages这是一个非常著名的非官方Windows预编译包网站由Christoph Gohlke维护更新及时版本齐全。这是解决此类问题的“神器”。这里我们以Christoph Gohlke的网站为例因为它分类清晰包版本多。3.3 第三步下载匹配的Wheel文件你需要下载两个核心包PyQt5_sip和PyQt5。必须先安装PyQt5_sip再安装PyQt5。假设你的环境是Python 3.9 64位 Windows。访问网站在浏览器中打开https://www.lfd.uci.edu/~gohlke/pythonlibs/。查找PyQt5_sip使用页面搜索功能CtrlF搜索 “PyQt5_sip”。你会看到一列文件名如PyQt5_sip‑12.13.0‑cp39‑cp39‑win_amd64.whl。文件名解读PyQt5_sip: 包名。12.13.0: 版本号。cp39: 表示适用于CPython 3.9。cp310对应3.10以此类推。win_amd64: 表示64位Windows。如果是32位则是win32。选择与你环境匹配的文件cp39和win_amd64并下载。查找PyQt5同样搜索 “PyQt5”。找到类似PyQt5‑5.15.10‑cp39‑cp39‑win_amd64.whl的文件。确保cp版本和平台后缀与你的环境一致然后下载。可选下载pyqt5-tools如果你需要Qt Designer等开发工具同样方法搜索下载pyqt5_tools。实操心得Gohlke的网站有时下载速度较慢。如果遇到困难可以尝试从清华镜像站直接pip安装特定版本有时也能命中预编译包。命令如pip install PyQt5_sip12.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simple。如果镜像站有对应版本的wheel就会直接安装成功。3.4 第四步安装下载的Wheel文件将下载好的.whl文件放在一个方便的目录比如D:\Downloads\。然后打开命令行导航到该目录依次执行安装命令。# 首先导航到存放.whl文件的目录 cd D:\Downloads # 先安装 PyQt5_sip使用文件的完整路径或直接文件名如果已在当前目录 pip install PyQt5_sip‑12.13.0‑cp39‑cp39‑win_amd64.whl # 再安装 PyQt5 pip install PyQt5‑5.15.10‑cp39‑cp39‑win_amd64.whl # 可选安装 tools pip install pyqt5_tools‑5.15.10.3.3‑cp39‑cp39‑win_amd64.whl如果安装顺利你会看到Successfully installed ...的提示。至此PyQt5应该已经成功安装到你的系统中。4. 方案二详解配置镜像源与精准安装如果觉得手动下载麻烦可以尝试让pip智能一点。这个方法的核心是使用国内镜像源加速并精确指定包版本来提高命中预编译轮子的概率。4.1 永久配置pip国内镜像源国内访问PyPI官方源速度慢且不稳定配置镜像源能极大提升下载速度和成功率。Windows系统配置方法在用户目录C:\Users\你的用户名\下创建一个名为pip的文件夹。在pip文件夹内创建一个名为pip.ini的文件。用记事本编辑pip.ini写入以下内容以清华源为例[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn timeout 6000trusted-host是必须的否则可能会报SSL错误。timeout设长一些避免超时。保存文件。之后所有pip命令都会默认使用清华源。4.2 使用精准安装命令配置好镜像源后在安装时可以尝试指定一个稍旧但稳定的版本因为镜像站对流行版本的预编译包收录更全。# 尝试安装特定版本的PyQt5及其sip镜像源会自动生效 pip install PyQt5_sip12.13.0 PyQt55.15.10为什么指定版本因为pip install PyQt5默认安装最新版。最新版的预编译轮子可能还未及时同步到镜像站或者与你当前的Python环境存在暂时的兼容性问题。指定一个经过广泛验证的旧版本如5.15.x系列成功率会高很多。如果依然失败如果上述命令仍然触发编译你可以尝试在命令后添加--only-binary :all:选项强制pip只使用二进制轮子如果找不到就报错而不是尝试编译。pip install PyQt5_sip PyQt5 --only-binary :all:这个命令会直接告诉你镜像站是否有可用的预编译包。5. 方案三详解安装完整的编译工具链如果你是一个需要经常安装各种带有C扩展的Python包的开发者比如scikit-learn,pandas,torch等那么花时间搭建一个本地的编译环境是值得的投资。一劳永逸。5.1 安装Microsoft Visual C Build Tools这是Windows上编译Python C扩展的“标准答案”。访问下载页前往微软官方下载页面搜索 “Build Tools for Visual Studio 2022”。运行安装程序下载并运行vs_BuildTools.exe。选择工作负载在安装界面勾选“使用C的桌面开发”工作负载。在右侧的“安装详细信息”中确保包含了“MSVC v143 - VS 2022 C x64/x86 生成工具”和“Windows 10/11 SDK”。对于Python 3.5到3.8可能需要MSVC v140或v141但Python 3.9强烈建议使用v143。执行安装点击安装这个过程会下载约几个GB的内容耗时较长请耐心等待。5.2 验证安装与环境配置安装完成后通常不需要手动配置环境变量安装程序会自动处理。为了验证可以重新打开一个新的命令提示符窗口重要让环境变量生效然后尝试直接安装PyQt5。pip install PyQt5这次pip应该会开始编译过程你会看到编译输出的日志而不是直接卡住或报错。编译过程会消耗一些时间几分钟到十几分钟CPU占用率会很高这是正常的。注意事项安装完整的VS Build Tools会占用大量磁盘空间可能超过10GB。如果你只是偶尔需要编译一两个包这可能不是最经济的选择。此外确保你的Python是通过官方安装程序python.org安装的并且是64位版本。一些第三方打包的Python如某些绿色版可能缺少必要的头文件或库导致即使有编译器也无法成功编译。6. 方案四详解使用Conda作为替代环境管理器如果你身处数据科学、机器学习或复杂的多项目开发领域Conda可能已经是你的老朋友了。对于PyQt5安装问题Conda堪称“降维打击”。6.1 Conda的优势与安装Conda是一个开源的包管理和环境管理系统它最大的特点是能管理非Python的依赖。PyQt5依赖Qt库这是一个庞大的C框架。Conda可以一次性把PyQt5和对应版本的Qt库都装好全部是预编译好的二进制文件完全避开编译环节。安装Miniconda推荐安装Miniconda它是一个轻量级的Conda发行版只包含Conda和Python。从清华大学镜像站下载Miniconda安装包速度更快。创建并激活新环境为了避免污染基础环境最好为每个项目创建独立环境。# 创建一个名为 pyqt_env 的新环境并指定Python版本 conda create -n pyqt_env python3.9 # 激活这个环境 conda activate pyqt_env6.2 使用Conda安装PyQt5在激活的Conda环境中安装PyQt5变得异常简单conda install pyqt是的就这么简单。Conda会自动从它的频道默认是conda-forge或anaconda解析并下载PyQt5、sip以及所有必需的Qt库的二进制包。整个过程无需编译速度取决于你的网速。你还可以安装开发工具conda install pyqt5-tools6.3 Conda与Pip的协作有时某个包只在PyPI上有。你可以在Conda环境中使用pip但需要遵循一个黄金法则先用Conda安装尽可能多的包最后再用pip安装剩下的。因为Conda对环境的掌控力更强如果顺序反过来用pip安装了一些有复杂依赖的包可能会破坏Conda维护的环境一致性。# 正确的顺序 conda install numpy pandas pip install some-pypi-only-package7. 进阶排查与疑难杂症处理即使按照上述方案操作有时仍会遇到一些“怪问题”。这里记录一些我踩过的坑和对应的排查技巧。7.1 常见错误与解决方案速查表错误现象或问题可能原因解决方案安装后导入报错DLL load failed1. 安装的PyQt5版本与Python位数不匹配32位 vs 64位。2. 系统缺少VC运行时库。1. 检查Python和PyQt5 wheel的架构是否一致。2. 安装对应版本的 Microsoft Visual C Redistributable 。pip命令本身无法识别Python未正确添加到系统PATH环境变量。重新运行Python安装程序确保勾选 “Add Python to PATH”。或手动添加Python和Scripts目录到PATH。镜像源配置后仍下载缓慢或失败1. 镜像源地址错误或失效。2. 公司网络有代理限制。1. 换用其他镜像源如阿里云https://mirrors.aliyun.com/pypi/simple/。2. 配置pip使用代理pip install [包名] --proxy http://user:passproxy_ip:port。安装过程中提示Permission denied权限不足尤其是在系统Python或受保护目录。1. 以管理员身份运行命令提示符。2. 更好的做法使用虚拟环境venv进行安装完全避免权限问题。使用Conda安装后PyCharm等IDE找不到包IDE的Python解释器未设置为Conda环境中的Python。在IDE的设置Settings中找到项目解释器Project Interpreter添加路径指向C:\Users\用户名\miniconda3\envs\环境名\python.exe。7.2 虚拟环境最佳实践的必选项无论采用哪种安装方案强烈建议在虚拟环境中安装PyQt5。虚拟环境可以为每个项目创建独立的Python包空间避免包版本冲突也无需系统权限。# 创建虚拟环境 python -m venv my_qt_project_env # 激活虚拟环境 (Windows) my_qt_project_env\Scripts\activate # 激活后pip install 的所有包都只在这个环境内 # 此时再使用前述任意方法安装PyQt5 pip install PyQt57.3 终极排查工具详细日志当所有常规方法都失效时查看pip的详细安装日志是最后的杀手锏。它能告诉你编译失败的具体在哪一行代码、哪个命令出错了。pip install PyQt5 -v --no-cache-dir 21 | tee install_log.txt这条命令会执行安装并将所有输出包括详细日志同时显示在屏幕和保存到install_log.txt文件中。打开这个文件搜索error或failed关键词通常能找到错误的根源例如某个头文件找不到、某个编译器标志不支持等。拿着具体的错误信息去搜索引擎往往能找到更精准的解决方案。安装PyQt5遇到的构建问题是Python生态中一个经典的“入门考验”。它迫使你去理解包分发、平台差异和构建工具的基本概念。掌握本文介绍的几种方法特别是手动安装Wheel和搭建编译环境不仅能解决PyQt5的问题也能为你未来应对任何需要编译的Python包如Cryptography、Pillow的高级特性等打下坚实的基础。我的经验是对于Windows下的快速开发“虚拟环境 手动下载匹配的Wheel”是性价比最高的组合而对于长期、复杂的项目环境“Conda环境管理”能为你省去无数依赖管理的烦恼。

相关新闻

点云密度计算优化:从O(N²)到秒级响应的C++实践

点云密度计算优化:从O(N²)到秒级响应的C++实践

1. 项目概述:点云密度计算为何需要优化?在三维视觉和机器人感知领域,点云数据是描述物体表面形态最直接的方式。无论是自动驾驶的激光雷达扫描,还是工业检测中的三维重建,我们拿到手的原始点云数据往往“疏密不均”。靠…

2026/10/8 0:23:32 阅读更多 →
科技创业公司联合创始人离职的深度分析与应对策略

科技创业公司联合创始人离职的深度分析与应对策略

这次我们来看一个关于创业公司团队动态的深度分析。这个标题"最后一个联合创始人离开,王小川身后空无一人"背后反映的是科技创业公司发展到一定阶段面临的典型困境:核心团队流失、创始人孤军奋战、公司战略方向调整等关键问题。对于技术创业者…

2026/10/11 15:17:01 阅读更多 →
解决Java国密算法Jar部署中JCE无法验证BouncyCastle Provider的实战指南

解决Java国密算法Jar部署中JCE无法验证BouncyCastle Provider的实战指南

1. 项目概述:当国密算法遇上Jar部署的“拦路虎”最近在做一个需要对接某特定行业系统的项目,对方要求所有接口的签名和加解密都必须使用国密算法(SM2/SM3/SM4)。这在技术选型上很明确,Java生态里BouncyCastle&#xff…

2026/10/13 3:28:36 阅读更多 →

最新新闻

Kiln AI Server Python 客户端库使用指南:同步/异步 API 调用与高级定制实战

Kiln AI Server Python 客户端库使用指南:同步/异步 API 调用与高级定制实战

人工智能AI 应用AI 评测RAG微调提示工程开发工具桌面应用 【免费下载链接】Kiln Build, Evaluate, and Optimize AI Systems. Includes evals, RAG, agents, fine-tuning, synthetic data generation, dataset management, MCP, and more. 项目地址: https://gitcod…

2026/10/14 18:22:46 阅读更多 →
鸿蒙应用内添加服务卡片到桌面:权限配置至formId管理的完整实践

鸿蒙应用内添加服务卡片到桌面:权限配置至formId管理的完整实践

前两天有个开发者在我写的卡片文章下面留言:应用里能不能直接触发“添加卡片到桌面”?用户根本不知道要长按桌面再选卡片,好多功能做出来都没人发现。这个问题其实问的人挺多的。鸿蒙的服务卡片虽然好用,但系统默认的添加路径藏在…

2026/10/14 18:22:46 阅读更多 →
自制轻量级单片机UI框架:低资源平台的架构设计与内存优化

自制轻量级单片机UI框架:低资源平台的架构设计与内存优化

我最早动起"自制轻量级单片机UI框架"这个念头,是在一个被现成UI库逼疯的下午。手里这块板子的MCU只给了64KB Flash和16KB RAM,产品需求却要一个带按钮、进度条和多级菜单的界面。我试着把一个开源UI库编进去,编译完一看&#xff0c…

2026/10/14 18:22:46 阅读更多 →
51单片机红外遥控NEC解码与波形显示方案

51单片机红外遥控NEC解码与波形显示方案

简介:这是一套基于51单片机的红外遥控解码与波形显示项目资料,面向电子爱好者、嵌入式初学者以及单片机课程设计/毕业设计人群,解决从红外信号接收、脉冲解码到LCD波形显示的全流程实现问题。压缩包共38个文件、9.68MB,涵盖C语言源…

2026/10/14 18:22:46 阅读更多 →
uIP TCP/IP协议栈实战:从Client到Server的嵌入式移植全解析

uIP TCP/IP协议栈实战:从Client到Server的嵌入式移植全解析

简介:基于uIP协议栈的TCP客户端与服务器程序,源自ALIENTEK战舰STM32开发板第52章,面向使用STM32与ENC28J60进行嵌入式网络通信的开发者。资源包含完整工程与配套文档,共223个文件,以C语言源文件(76个.c&…

2026/10/14 18:22:46 阅读更多 →
JavaScript sort排序原理与常见陷阱解析

JavaScript sort排序原理与常见陷阱解析

先说个我自己的真实经历。有次帮同事排查一个列表排序问题,数据是几组数字,他写了 arr.sort() ,结果排出来是 [1, 10, 2, 22, 3] 这种完全看不懂的顺序。他盯着屏幕看了半天,第一反应是"sort排序坏了"。其实不是坏了…

2026/10/14 18:21:46 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/14 7:53:34 阅读更多 →