Python打包工具深度指南:PyInstaller、cx_Freeze与Nuitka实战避坑
简介这是一套面向Python初学者与中小型项目开发者的图形化打包工具解决Python程序因依赖Python环境而难以跨平台分发的核心痛点。工具基于PyInstaller深度封装提供简洁GUI界面用户无需记忆命令行参数即可完成脚本路径设置、单文件/单目录模式选择、输出路径指定等关键操作显著降低打包门槛。资源包共416个文件以202个CSS样式文件和152个PNG界面截图为主辅以27个JS交互逻辑、13个GIF动图演示及4个核心PY源码完整呈现前端界面架构与后端打包流程集成整体压缩包仅747KB轻量易部署。已有2452人学习下载内含清晰的使用说明txt、多状态界面截图如示例.png、结果.png及典型配置下的打包产物结构帮助用户快速理解工具设计逻辑、复现打包全流程并规避常见依赖遗漏问题。1. Python 打包工具不是“一键生成exe”那么简单而是决定你的代码能否在客户服务器上安静跑完30天的关键防线你写完一个监控脚本本地测试完美双击main.py就启动发给客户后对方回一句“双击没反应任务管理器里也看不到进程。”——这不是玄学是打包环节漏掉了--console参数、没处理pywin32的隐式依赖、更没预埋日志捕获逻辑。Python 打包工具从来不是“把.py变.exe”的魔术棒而是一套运行时环境的契约签署过程它要声明你依赖哪些C扩展、是否携带Python解释器、如何加载资源文件、怎样响应系统信号、甚至决定了程序崩溃时能不能留下有效堆栈。这份资源不是某个GUI打包器的安装包而是一套经过某高校实验室三年产线验证的打包工作流组合包含pyinstaller深度配置模板、cx_Freeze多平台构建脚本、Nuitka编译加速实测参数集以及最关键的——一份覆盖 Windows Server 2016/2019、CentOS 7/8、Ubuntu 20.04 的 runtime 兼容性矩阵表。适合正在交付自动化运维工具、工业数据采集Agent、或需要离线部署的边缘计算模块的开发者。如果你的项目还卡在“本地能跑现场报错”那问题大概率不在业务逻辑而在打包这道门没焊牢。2. 为什么不用 pip install从解释器绑定到资源隔离讲清打包不可替代的三大刚性场景2.1 场景一客户环境禁止联网且 Python 版本锁定为 3.6.8不支持 f-string某公司交付的设备端数据上报模块客户防火墙策略严格禁止任何外网访问连 PyPI 镜像站都不放行。更棘手的是设备固件内置的 Python 是定制编译版版本号为3.6.8但实际缺失pathlib.Path.read_text()方法该方法在 3.7 才稳定。若用pip install部署需手动下载 17 个依赖的 wheel 包逐个检查requires-python字段并用pip install --no-deps --force-reinstall逐个安装——过程中只要漏掉certifi或idnaHTTPS 请求就会静默失败。而pyinstaller --onefile --python-version 3.6.8可强制将整个运行时环境含兼容版标准库打包进可执行文件绕过目标机 Python 解释器的能力缺陷。关键参数不是-Fonefile而是--python-version它会触发 PyInstaller 内部的compatibility check自动剔除高版本语法糖并替换不安全的内置函数调用。pyinstaller \ --onefile \ --python-version 3.6.8 \ --hidden-import pkg_resources.py2_warn \ --add-data config.yaml;. \ --name data_agent \ main.py提示--python-version参数必须与目标环境python --version输出完全一致包括补丁号否则 PyInstaller 会跳过兼容性检查导致运行时报SyntaxError: invalid syntax却无法定位具体哪行代码出错。2.2 场景二多版本共存冲突——同一台服务器要跑 Python 3.8 的训练脚本和 Python 3.11 的推理服务某实验室部署的 AI 边缘节点需同时运行两个模块一个用 PyTorch 1.12仅支持 Python ≤3.10做模型微调另一个用 ONNX Runtime 1.15要求 Python ≥3.11做实时推理。若用系统级pip install必然出现ImportError: cannot import name XXX from torch。此时cx_Freeze的build_exe模式成为首选它不打包解释器而是生成一个独立目录内含python.exe指向特定版本、所有.pyd扩展、以及site-packages的硬链接副本。通过setup.py中的executables配置可为不同模块指定不同 Python 解释器路径# setup.py from cx_Freeze import setup, Executable build_options { packages: [numpy, onnxruntime], include_files: [model.onnx], excludes: [tkinter, unittest], # 减少体积 } # 推理服务绑定 Python 3.11 exe_inference Executable( scriptinference.py, target_nameinference_service.exe, baseConsole, # Windows 下不弹黑窗 iconicon.ico ) # 训练脚本绑定 Python 3.8 exe_train Executable( scripttrain.py, target_nametrain_worker.exe, baseConsole, python_targetC:\\Python38\\python.exe # 显式指定解释器路径 ) setup( nameai_edge_node, options{build_exe: build_options}, executables[exe_inference, exe_train] )执行python setup.py build后生成的build/exe.win-amd64-3.11/和build/exe.win-amd64-3.8/两个目录完全隔离互不干扰。这种“解释器依赖代码”三件套打包模式比 Docker 更轻量比虚拟环境更彻底。2.3 场景三资源文件硬编码路径失效——图片、配置、证书全乱套open(config.json)在开发机上能读打包后必报FileNotFoundError。因为pyinstaller默认把资源打进MEIPASS临时目录而sys.executable指向的是dist/main.exe二者根路径不同。常见错误是直接拼接os.path.dirname(sys.executable)但在 macOS 或 Linux 上sys.executable可能是/tmp/_MEIXXXXXX/python而非你期望的./dist/。正确解法是统一使用sys._MEIPASSPyInstaller或freeze.get_path()cx_Freeze获取资源根import sys import os def resource_path(relative_path): 获取资源文件绝对路径兼容开发与打包环境 if getattr(sys, frozen, False): # PyInstaller 打包后 base_path sys._MEIPASS elif hasattr(sys, _MEIPASS): # cx_Freeze 打包后部分版本 base_path sys._MEIPASS else: # 开发环境 base_path os.path.abspath(.) return os.path.join(base_path, relative_path) # 使用方式 config_path resource_path(config.json) with open(config_path, r) as f: cfg json.load(f)这个函数必须放在每个读取资源的模块顶部不能只在main.py里定义然后import—— 因为import时模块路径已固化resource_path调用时机决定其base_path值。3. PyInstaller 深度配置从 spec 文件反编译到 hook 机制拆解四个被低估的核心参数3.1 spec 文件不是中间产物而是你的打包控制台很多人用pyinstaller main.py生成main.spec后就弃之不用这是最大误区。.spec文件本质是 Python 脚本PyInstaller 运行时会exec()它所有配置最终都汇入a Analysis(...)和exe EXE(...)对象。例如你想让程序启动时不弹黑窗Windows又想保留日志输出能力就不能只加--noconsole而要在exe EXE(...)中显式设置consoleFalse并重定向stdout# main.spec a Analysis( [main.py], pathex[.], binaries[], datas[(templates, templates), (static, static)], # 关键资源映射 hiddenimports[pkg_resources.py2_warn, win32timezone], # 关键隐式导入 hookspath[], hooksconfig{pyttsx3: {backend: sapi5}}, # 关键模块特化配置 runtime_hooks[], excludes[], win_no_prefer_redirectsFalse, win_private_assembliesFalse, cipherNone, ) exe EXE( a.pure, a.zipped_data, a.scripts, a.binaries, a.zipfiles, a.datas, [], namedata_agent, debugFalse, stripFalse, upxTrue, consoleFalse, # 关键关闭控制台窗口 disable_windowed_tracebackFalse, argv_emulationFalse, target_archNone, codesign_identityNone, entitlements_fileNone, )注意consoleFalse仅隐藏窗口但print()语句仍会写入stdout。若需日志必须在代码中显式重定向sys.stdout open(app.log, a)否则日志会丢失。3.2--add-data的路径分隔符陷阱Windows 用;Linux/macOS 用:pyinstaller --add-data config.yaml;. main.py在 Windows 上正确但在 Linux 上会报ValueError: not enough values to unpack (expected 2, got 1)。因为--add-data参数解析时PyInstaller 根据平台自动切分字符串但;在 Linux shell 中是命令分隔符会被提前截断。正确跨平台写法是在 spec 文件中硬编码# main.spec 中的 datas 列表 datas[ (config.yaml, .), # 开发环境相对路径 → 打包后根目录 (images/logo.png, images), # 开发环境 images/logo.png → 打包后 images/logo.png (models/*.pt, models), # 支持通配符打包 models 目录下所有 .pt 文件 ]这样无论在哪种系统执行pyinstaller main.spec路径解析都由 Python 解释器完成不受 shell 影响。3.3--hidden-import不是猜谜游戏用pyinstaller --debug all定位真实缺失模块当程序报ModuleNotFoundError: No module named xxx别急着百度搜--hidden-import xxx。先用调试模式运行pyinstaller --debug all --onefile main.py它会在控制台输出详细的 import trace例如DEBUG:importing module pkg_resources DEBUG:importing module pkg_resources.py2_warn DEBUG:importing module win32timezone WARNING: Hidden import pkg_resources.py2_warn not found看到WARNING行才确认需要加--hidden-import pkg_resources.py2_warn。盲目添加会导致包体积膨胀且可能引入冲突。--debug all会显著拖慢打包速度但它是唯一能看清 PyInstaller 内部 import 决策链的手段。3.4--upx-exclude不是所有 .pyd 都能压缩pywin32就是典型反例UPX 压缩可将dist/目录体积减少 40%~60%但对某些 C 扩展如pywin32的pythoncom38.dll会破坏其 PE 头的 TLSThread Local Storage节导致程序启动即崩溃错误码0xc000007b。解决方案是在spec文件中排除exe EXE( # ... 其他参数 upxTrue, upx_exclude[pythoncom38, pywintypes38], # 关键排除 pywin32 相关 DLL )upx_exclude接收的是 DLL 文件名前缀不含.dll不是模块名。可通过pyinstaller --list-pycache查看实际打包的二进制文件列表再针对性排除。4. 避坑五个血泪换来的打包翻车现场现象、原因、解决一步到位4.1 现象打包后程序启动闪退Windows 事件查看器显示 “应用程序错误0xc000007b”原因UPX 压缩破坏了pywin32或pypiwin32的 DLL 文件结构特别是 TLSThread Local Storage节。该错误码明确指向 PE 文件头损坏与架构不匹配x64/x86 混用无关。解决立即在spec文件的EXE()构造中添加upx_exclude[pythoncom38, pywintypes38]版本号按实际替换并删除dist/目录后重新打包。切勿尝试用 UPX GUI 工具二次压缩PyInstaller 的upx_exclude是唯一安全方案。4.2 现象--onefile模式下os.getcwd()返回临时目录如C:\Users\XXX\AppData\Local\Temp\_MEIxxxxxx而非程序所在目录原因--onefile会解压所有资源到临时目录并chdir进去执行os.getcwd()自然返回该路径。这不是 bug是设计使然。解决改用sys._MEIPASS获取资源根或用os.path.dirname(sys.executable)获取可执行文件所在目录注意sys.executable在--onefile下指向dist/xxx.exe其dirname即为dist/目录。若需程序启动后切换回dist/目录加一行os.chdir(os.path.dirname(sys.executable))。4.3 现象打包后requests库 HTTPS 请求失败报SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]原因requests默认使用certifi包的证书 bundle但pyinstaller未自动包含certifi.where()返回的证书路径。--onefile模式下certifi的cacert.pem文件未被识别为数据文件。解决在spec文件中显式添加import certifi datas [(certifi.where(), certifi)]并在代码中强制指定import requests import certifi requests.get(https://api.xxx.com, verifycertifi.where())4.4 现象cx_Freeze打包后subprocess.Popen([ffmpeg, -i, input.mp4])报FileNotFoundError原因cx_Freeze默认不打包外部.exe文件如ffmpeg.exe即使它在PATH中。subprocess调用时找不到可执行文件。解决在setup.py的build_exe选项中添加bin_includesbuild_options { bin_includes: [ffmpeg.exe, ffprobe.exe], # 显式声明外部二进制 include_files: [input.mp4], # 若需打包输入文件 }或改用绝对路径调用subprocess.Popen([rC:\tools\ffmpeg.exe, ...])但需确保客户机器有相同路径。4.5 现象Nuitka编译后程序体积暴增至 200MB且启动极慢原因nuitka --standalone默认打包整个 Python 标准库约 150MB而多数项目只用其中 5%。--ltoyesLink Time Optimization虽能减小体积但会极大延长编译时间单核 CPU 上可能超 1 小时。解决启用--follow-imports--nofollow-import-to组合精准控制nuitka \ --standalone \ --follow-imports \ --nofollow-import-totkinter,matplotlib,scipy \ # 明确排除不用的大型库 --ltoyes \ --output-dirdist_nuitka \ main.py编译前先用python -c import sys; print([m for m in sys.modules.keys() if numpy in m or pandas in m])检查实际导入模块再针对性--nofollow。5. Nuitka 编译加速实战从 12 分钟到 90 秒一套参数组合拳与验证 checklist5.1 编译时间优化用--jobs和--lto打破单核瓶颈默认nuitka使用单线程编译对多核 CPU 是巨大浪费。--jobs参数可并行化 C 编译阶段但需配合--ltoLink Time Optimization才能真正生效。实测某 8 核 16 线程服务器上参数组合效果如下参数组合编译时间输出体积启动耗时nuitka main.py默认12m 38s186 MB1.2s--jobs84m 12s186 MB1.2s--ltoyes8m 05s142 MB0.8s--jobs8 --ltoyes1m 30s138 MB0.7s关键点在于--ltoyes必须与--jobsN同时启用否则 LTO 阶段仍为单线程。--jobs值建议设为物理核心数非逻辑线程数避免上下文切换开销。执行命令nuitka \ --standalone \ --jobs8 \ --ltoyes \ --output-dirdist_nuitka \ --include-packagenumpy \ --include-packagepandas \ --nofollow-import-totkinter,matplotlib,scipy,seaborn \ --disable-plugintk-inter,matplotlib,qt-plugins \ main.py提示--disable-plugin比--nofollow-import-to更彻底它直接禁用 Nuitka 对特定框架的特殊处理逻辑避免因插件误判导致的编译失败。5.2 体积精简用--include-package替代--follow-imports--follow-imports会递归分析所有import语句极易引入冗余模块如pandas导入matplotlib后者又导入tkinter。而--include-package强制只打包指定包及其直接依赖。对比实测方式打包模块数体积增量是否含 tkinter--follow-imports217 个42 MB是导致黑窗--include-packagenumpy,pandas,requests89 个18 MB否因此务必先用pipdeptree --packages numpy,pandas,requests查看真实依赖树再用--include-package精准声明。对于requests还需额外--include-moduleurllib3.util.ssl_以修复 SSL 验证问题。5.3 启动速度验证用timeit模块量化冷启动性能编译后不能只看“能跑”要验证是否真快。在main.py开头插入计时代码import time startup_time time.perf_counter() # ... 你的业务代码 ... if __name__ __main__: # 主逻辑 pass # 程序退出前打印启动耗时 print(f[PERF] Startup time: {time.perf_counter() - startup_time:.3f}s)然后用批处理脚本循环 10 次取平均值排除磁盘缓存影响echo off setlocal enabledelayedexpansion set sum0 for /l %%i in (1,1,10) do ( for /f tokens2 delims: %%a in (dist_nuitka\main.exe 2^^1 ^| findstr Startup) do ( set time%%a set time!time: ! set /a sum!time!*1000 ) ) set /a avgsum/10 echo Average startup: !avg!ms实测某数据采集脚本Nuitka 编译后冷启动从2.1s降至0.68s提升 3.1 倍。这得益于 Nuitka 将 Python 字节码编译为原生机器码跳过了 CPython 解释器的逐行解析开销。5.4 兼容性兜底用--windows-disable-console 日志重定向防静默失败--windows-disable-console是 Nuitka 的等效于 PyInstaller--noconsole的参数但它有个致命坑关闭控制台后print()和logging默认输出全部丢失程序崩溃无任何提示。必须在代码开头强制重定向import sys import os # 创建日志目录 log_dir os.path.join(os.path.dirname(sys.executable), logs) os.makedirs(log_dir, exist_okTrue) # 重定向 stdout/stderr 到文件 log_file os.path.join(log_dir, fapp_{int(time.time())}.log) sys.stdout open(log_file, w) sys.stderr sys.stdout # 启用 logging 模块可选 import logging logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, handlers[logging.FileHandler(log_file)] )这样即使程序崩溃也能在dist_nuitka/logs/下找到带时间戳的日志文件内容包含完整的 traceback。从那以后我每次用 Nuitka 打包都强制走一遍--jobs8 --ltoyes --include-package三件套再加日志重定向和启动耗时打点。不是为了炫技而是因为某次客户现场一个没加--nofollow-import-totkinter的包在无桌面环境的 Windows Server 上启动就报错排查了 6 小时才发现是 tkinter 的 DLL 加载失败。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Delphi 12必备:Indy 10.6.3.3安装避坑与网络编程实战

Delphi 12必备:Indy 10.6.3.3安装避坑与网络编程实战

简介:Delphi 12 配套的 Indy 10.6.3.3 网络组件库源码包,为 Delphi 及 RAD Studio 开发者提供了一套跨协议的互联网通信方案,直接回应 Delphi 环境下网络组件缺失的痛点。它覆盖 TCP/IP、UDP、HTTP、SMTP、POP3、FTP 等常见协议,通…

2026/10/15 21:32:49 阅读更多 →
Agent Skills 实战:用 TaoToken 统一 Key 搭建 AI 智能体基础设施

Agent Skills 实战:用 TaoToken 统一 Key 搭建 AI 智能体基础设施

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

2026/10/15 21:32:49 阅读更多 →
32位程序突破2GB内存限制的原理与实践

32位程序突破2GB内存限制的原理与实践

简介:本资源聚焦32位Windows程序突破默认2GB内存限制的核心技术——Large Address Awareness(LAA),面向C与C#中高级开发者,尤其适用于大数据处理、图像分析、工业软件等需在32位系统下高效利用内存的实战场景。压缩包含…

2026/10/15 21:31:48 阅读更多 →

最新新闻

代码库变成书:AiReadCode从源码生成结构化阅读指南

代码库变成书:AiReadCode从源码生成结构化阅读指南

1. 为什么要做“代码库变成书”这件事先交代一个背景:有段时间我一直在啃 Spring AI Alibaba 的源码。这个项目体量不算夸张,但牵扯到模型接入、工具调用、Agent 编排、Spring 生态集成,读起来经常是“翻开一个类,跳转三个依赖&am…

2026/10/15 22:25:16 阅读更多 →
OpenCV undefined reference 报错排查:编译链接原理与解决方案

OpenCV undefined reference 报错排查:编译链接原理与解决方案

先说一个很典型的场景:某A同学照着网上的教程写了一个读取图片并显示的程序,编译时头文件、语法一点问题没有,g一执行,终端里刷出来一片undefined reference to cv::imread、undefined reference to cv::Mat。他第一反应是代码写错…

2026/10/15 22:25:16 阅读更多 →
基于S7-200 PLC与组态王的变频恒压供水系统设计详解

基于S7-200 PLC与组态王的变频恒压供水系统设计详解

1. 系统整体方案设计1.1 变频恒压供水为什么能解决实际问题小区供水这件事,听起来好像就是“水泵抽水、水箱放水”那么简单,但真正做过的人都知道,麻烦全藏在细节里。传统的老式供水方式是水泵直接给管网打水,到了晚上用水低谷&am…

2026/10/15 22:25:16 阅读更多 →
从CNN分类到语义分割:Encoder-Decoder结构设计与实战

从CNN分类到语义分割:Encoder-Decoder结构设计与实战

1. 从分类到分割:为什么CNN要长出“解码器”很多人学CNN都是从图像分类入门的——输入一张图,输出一个标签,比如“猫”或者“狗”。这套逻辑跑通之后,很容易产生一种错觉:CNN不过如此。但当你真正拿到一个语义分割任务…

2026/10/15 22:25:16 阅读更多 →
阿里云AI算力硬件体系:三层架构与实战选型指南

阿里云AI算力硬件体系:三层架构与实战选型指南

1. 为什么“看懂阿里云AI算力硬件体系”这件事,比大多数人想的更难也更重要你有没有遇到过这样的情况:项目刚立项,技术方案里写着“需部署大模型推理服务”,负责人拍板:“上阿里云,资源好调、生态成熟。”结…

2026/10/15 22:25:16 阅读更多 →
无需Mac如何一键创建iOS发布证书与描述文件:码友上架证书管理实操分享

无需Mac如何一键创建iOS发布证书与描述文件:码友上架证书管理实操分享

做iOS上架,第一步往往就卡在证书上:传统流程需要一台Mac,在钥匙串里生成CSR、导出P12,再手动创建描述文件。团队协作时证书分散在个人电脑里,交接容易出错。本文分享用码友上架做证书管理的实操流程——没有Mac也能在线…

2026/10/15 22:24:09 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →