TDgpt Windows 打包与离线交付实战指南:从 win_release.py 到 Inno Setup 安装器

发布时间:2026/9/14 17:48:04
TDgpt Windows 打包与离线交付实战指南:从 win_release.py 到 Inno Setup 安装器 TDgpt Windows 打包与离线交付实战指南从 win_release.py 到 Inno Setup 安装器【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine导读本文聚焦 TDengine 的 AI 分析节点 TDgptTDengine Analytics Node在 Windows 平台上的完整打包与交付流程。内容以 packaging/README.md 为骨架结合 win_release.py、build_offline_assets.py、tdgpt.iss 等源码与测试文件系统说明如何生成基础安装器、构建外部离线 tar 包、以及如何通过静默参数实现无人值守部署与 All-in-OneAIO集成。读完本文你将掌握 TDgpt Windows 交付的两条标准路径、全部命令行参数、Python 运行时发现优先级以及常见故障的排查方法。交付范围两条安装路径当前 TDgpt Windows 交付只保留两条安装路径见 packaging/README.md基础安装器 在线安装安装器只携带应用骨架Python 环境、模型等通过网络在线准备基础安装器 外部离线 tar 包安装器配合一个独立分发的 tar 包完成全离线部署目标机器无需联网、无需系统 Python。旧的full-offline全功能一体包模式已经删除打包脚本中不再包含相关逻辑。这一设计决定了后续所有操作步骤的前提基础安装器与离线资产是两份独立产物需要分别构建并配套交付。目录结构与核心文件打包相关文件分布在两个目录中源码实际位置以本仓库 tools/tdgpt 为准README 中的路径相对其自身所在目录引用时请换算tools/tdgpt/packaging/ ├── win_release.py # Windows 打包主入口Python ├── build_offline_assets.py # 外部离线 tar 包构建脚本 ├── installer/ │ ├── tdgpt.iss # Inno Setup 模板含向导页与静默参数逻辑 │ └── taosanode-service.xml # WinSW Windows 服务模板 ├── test_win_release.py # win_release.py 的单元测试 ├── README.md / README-CN.md tools/tdgpt/script/ ├── install.py # Windows 安装逻辑环境准备、模型导入 ├── uninstall.py # Windows 卸载逻辑 └── taosanode_service.py # 服务与模型统一管理脚本各文件的职责在打包主流程中逐层展开win_release.py负责整理安装载荷、生成.iss脚本并调用ISCC.exebuild_offline_assets.py负责把 Python 运行时、虚拟环境和模型载荷打成一个 tar 包tdgpt.iss提供交互式向导页与/OFFLINE、/ONLINE静默参数支持taosanode-service.xml定义 WinSW 托管的Taosanode服务。打包机预置要求基础安装器打包前置条件Python 3.10 / 3.11 / 3.12且可直接从PATH调用。win_release.py的check_python_version()会在入口处校验win_release.py版本不符直接退出Inno Setup 6ISCC.exe默认路径为C:\Program Files (x86)\Inno Setup 6\ISCC.exe可通过--iscc-path覆盖win_release.py源码目录完整至少包含win_release.py、installer/tdgpt.iss、script/install.py、script/uninstall.py、script/taosanode_service.py若要在基础安装器内附带模型归档提前准备模型目录例如tdtsfm.tar.gz、timemoe.tar.gz、moirai.tar.gz、chronos.tar.gz、timesfm.tar.gz、moment-large.tar.gz。版本号也有强校验win_release.py要求版本长度小于 16 且只含数字和点正则^[0-9]\.([0-9]\.){1,3}[0-9]$见 win_release.py例如3.4.1.0.0325。离线 tar 打包额外前置条件若还要生成外部离线 tar 包需要准备一个主 venv 目录taosanode 主虚拟环境零个或多个模型 venv 目录如 moirai、chronos、timesfm、momentfm 各自独立的环境一个Python 运行时来源既可以是已含python.exe的运行时目录也可以是packaging/bin/uv.exe或--uv-exe指定的路径让脚本用 uv 自动准备一个可选 seed 包携带已有离线模型载荷也可顺带携带模型 venv 载荷用于复用历史产物、避免重新打包大体积文件。可选本地二进制缓存packaging/bin/WinSW.exe基础安装器打包时作为本地缓存复用缺失时脚本会尝试从 GitHub 下载 v2.12.0win_release.py并回写缓存packaging/bin/uv.exe离线 tar 打包时用于自动准备 Python 运行时当提供了--python-runtime-dir时不需要。工具说明win_release.py不把 Python 运行时或虚拟环境打进基础安装器这是与旧版的关键区别build_offline_assets.py在未提供--python-runtime-dir时优先使用packaging/bin/uv.exebuild_offline_assets.py并通过uv python install version拉取指定版本 Python默认 3.11。目标机器要求生成的安装器对运行环境有以下预期Windows 101803 或更高或 Windows Server 2019Microsoft Visual C Redistributable x64 14.44 或更高。该约束直接体现在 tdgpt.iss 的MinVCRuntimeMajor/MinVCRuntimeMinor定义中并在InitializeSetup阶段通过注册表SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64读取版本号逐一比较对应IsVCRuntimeVersionSupported逻辑不满足会弹出错误提示要求安装最新 VC 2015-2022 运行库在线首次安装目标机器需要在PATH中提供 Python 3.10 / 3.11 / 3.12离线安装不要求系统 Python——安装器用系统内置的tar.exeWindows 10 1803 起自带从离线 tar 中引导 Python 运行时。值得注意的是install.py 对 Windowstar.exe有一个明确的工程性约束它适合全新解压但在升级流程中向已有python/runtime或 venv 树原地覆盖时不可靠常报Cant unlink already-existing object因此升级场景会改用 Python 自身完成解压install.py。基础安装器包含什么始终包含由win_release.py的各个copy_*函数与tdgpt.iss的[Files]段共同决定cfg/含taosanode.config.py与打包时生成的package-metadata.jsonedition、app_name、version、resource_package_url 等元数据见 win_release.pylib/taosanalytics分析算法包复制时剔除__pycache__、.pyc、.git*且打包时会把taosanalytics/__init__.py中的__version__改写为本次打包版本号win_release.pyresource/、requirements/所有requirements*.txtpython/注意——README 中基础安装器不含 python/runtime的表述与当前 win_release.py 的copy_packaged_python_runtime()存在差异当前脚本实际会把解析到的 Python 运行时复制进python/runtime优先--python-runtime-dir否则回退sys.base_prefix/sys.executable目录以本文仓库代码为准bin/taosanode_service.py、WinSW 可执行文件与taosanode-winsw.xml、以及生成的start-taosanode.bat、stop-taosanode.bat、status-taosanode.bat、start-model.bat、stop-model.bat、status-model.bat六个包装脚本win_release.py根目录install.py、install.bat、uninstall.py、uninstall.bat包元数据cfg/package-metadata.json。可选从--model-dir复制模型归档到install_dir\model\仅识别特定文件名见下文模型归档说明。不包含解压后的虚拟环境、解压后的模型目录模型归档在安装阶段由install.py负责导入/解压。安装后默认目录为C:\TDengine\taosanodetdgpt.iss安装器同时向注册表HKLM\Software\taosdata\TDgpt写入InstallDir与Version供升级检测使用。使用方式构建基础安装器# 社区版 python packaging/win_release.py -e community -v 3.4.1.0.0325 # 企业版 python packaging/win_release.py -e enterprise -v 3.4.1.0.0325 # 附带模型归档目录 python packaging/win_release.py -e community -v 3.4.1.0.0325 -m D:\models # 附带目录中所有可识别模型归档 python packaging/win_release.py -e community -v 3.4.1.0.0325 -m D:\models -a # 自定义输出目录 python packaging/win_release.py -e community -v 3.4.1.0.0325 -o D:\tdgpt-release\20260325-r7 # 指定资源包版本用于默认下载 URL 命名 python packaging/win_release.py -e enterprise -v 3.4.1.0 --resource-package-version 1.1主流程win_release.py为校验 Python 版本 → 解析参数 → 清理重建发布目录 → 依次复制配置、Python 源码、资源、依赖清单、运行时、模型、企业专属文件、服务脚本与图标 → 生成install.bat/uninstall.bat→ 从模板生成tdgpt.iss→ 调用ISCC.exe编译。企业版还会从taos-internal私有仓库路径复制专属文件copy_enterprise_files其行为由 test_win_release.py 的测试用例验证。构建外部离线 tar 包使用build_offline_assets.py生成 Windows 离线安装所需的外部 tarpython packaging/build_offline_assets.py ^ --output-file D:\offline-tar\tdengine-tdgpt-offline-assets-3.4.1.0.0325-windows-x64.tar ^ --seed-package D:\offline-seed\tdgpt-model-seed.tar ^ --python-runtime-dir C:\TDengine\python311 ^ --main-venv-dir C:\TDengine\taosanode\venvs\venv ^ --extra-venv-dir C:\TDengine\taosanode\venvs\moirai_venv ^ --extra-venv-dir C:\TDengine\taosanode\venvs\chronos_venv ^ --extra-venv-dir C:\TDengine\taosanode\venvs\timesfm_venv ^ --extra-venv-dir C:\TDengine\taosanode\venvs\momentfm_venv如果不想预先准备 Python 运行时目录python packaging/build_offline_assets.py ^ --output-file D:\offline-tar\tdengine-tdgpt-offline-assets-3.4.1.0.0325-windows-x64.tar ^ --main-venv-dir C:\TDengine\taosanode\venvs\venv ^ --extra-venv-dir C:\TDengine\taosanode\venvs\moirai_venv ^ --uv-exe packaging\bin\uv.exe ^ --python-version 3.11推荐的离线资产包命名tdengine-tdgpt-offline-assets-version-windows-x64.tartar 包内部结构由 build_offline_assets.py 的build_bundle组装python/runtime/——Python 运行时venvs/venv/——主 venvvenvs/extra_venv/——各模型独立 venvmodel/model_name/——来自可选--seed-package的模型载荷脚本会通过MODEL_NAME_ALIASES把moment、moment-large、momentfm统一归一到model/moment等规范名build_offline_assets.pyoffline-assets-manifest.txt——清单文件记录bundle_kind、main_venv、seed 来源、模型列表与生成时间build_offline_assets.py。底层逻辑上build_bundle会先检查 seed 包中是否已存在venvs/venv、venvs/extra_venv前缀已存在则直接从 seed 流式复制避免重复打包不存在才从本地目录添加。seed 包中的python/与旧清单默认被排除避免内容冲突。推荐交付流程用win_release.py构建基础安装器用build_offline_assets.py构建外部离线 tar两份文件一起交付目标机器在安装向导中选择Offline package并指向该 tar。参数一览win_release.py主要参数参数短选项说明--edition-ecommunity或enterprise--version-v包版本如3.4.1.0.0325--model-dir-m可选模型归档目录复制进安装载荷--all-models-a配合--model-dir复制所有可识别模型归档--output-o输出目录默认D:\tdgpt-release--iscc-path覆盖 Inno Setup 编译器路径--skip-model-check兼容旧参数基础安装器已不再强制模型归档校验--resource-package-version资源包版本默认1.0用于生成默认资源包下载 URL--resource-package-url自定义资源包下载 URL提供后覆盖 version 模板build_offline_assets.py主要参数参数说明--output-file输出 tar 路径--seed-package可选 seed tar含离线模型载荷与可选模型 venv 载荷--python-runtime-dir已有 Python 运行时目录含python.exe--main-venv-dir主 taosanode venv打包为venvs/venv--extra-venv-dir额外模型 venv 目录可重复传入--uv-exe可选uv.exe路径在省略--python-runtime-dir时使用--python-versionuv 使用的 Python 版本默认3.11--bundle-kindvenv/model/combined默认combined兼容旧版合一包模型归档说明指定--model-dir时win_release.py的copy_model_files()会复制以下被识别的归档tdtsfm.tar.gz始终复制timemoe.tar.gz始终复制加-a后额外复制chronos.tar.gz、moment-large.tar.gz、moirai.tar.gz、timesfm.tar.gz这些归档都是可选的——不附带模型归档也能构建安装器。模型的在线默认选择是 Moirai Small 与 MOMENT Base见install.py的DEFAULT_ONLINE_MODELS [moirai, moment]与 tdgpt.iss 的向导默认值各模型的在线下载体积TimeMoE 200M 约 865 MB、Chronos Bolt Base 约 783 MB、TimesFM 2.5 200M 约 850 MB 等与安装后磁盘占用在install.py的MODEL_SPECS中集中定义。产物命名生成的基础安装器命名如下注意不再带-base后缀tdengine-tdgpt-oss-version-windows-x64.exe tdengine-tdgpt-enterprise-version-windows-x64.exe对应关系由parse_arguments()设置community →tdengine-tdgpt-ossenterprise →tdengine-tdgpt-enterprisewin_release.py。静默与命令行安装安装器支持完全静默无人值守安装适用于脚本化部署和 AIO 集成。静默离线安装无需系统 Pythontdgpt-setup.exe /VERYSILENT /NORESTART /OFFLINED:\packages\tdengine-tdgpt-offline-assets-3.4.1.0.0325-windows-x64.tar参数说明/VERYSILENT完全无 UI/SILENT最小 UI仅显示进度条/NORESTART安装后不重启/OFFLINEpath外部离线 tar 包路径/DIRpath覆盖安装目录仅首次安装有效传入/OFFLINE后安装器自动进入离线模式Python 运行时用系统tar.exe从 tar 包引导无需系统 Python。该参数在tdgpt.iss的ApplyCommandLineModeOverrides中生效tdgpt.iss同时会预填离线包路径。静默在线安装需要系统 Pythontdgpt-setup.exe /VERYSILENT /NORESTART /ONLINE1在线模式不是静默安装的默认模式需显式传/ONLINE1强制。全新在线安装要求目标机器PATH中有 Python 3.10–3.12若所选路径下检测不到可用 Python安装器会在安装日志中给出明确错误。Python 发现优先级安装期间install.bat由win_release.py生成win_release.py按以下顺序定位 Python 解释器Packaged runtime Python—install_dir\python\runtime\python.exe当前脚本随包携带的运行时已有 venv Python—install_dir\venvs\venv\Scripts\python.exe升级场景系统 Python—PATH中的python或python3在线模式兜底从离线 tar 引导— 用tar.exe从离线包抽取python/runtime/到临时目录_bootstrap再用该 Python 执行install.py。_bootstrap临时目录在安装完成后自动清理。注意README 中发现优先级为已有 venv → packaged runtime → 系统 Python → tar 引导而当前install.bat生成代码的实际顺序是先 packaged runtime 再已有 venv本文以仓库当前代码为准。All-in-OneAIO集成示例REM install-all.bat for AIO packaging installers\tdgpt-setup.exe /VERYSILENT /NORESTART /OFFLINE%CD%\offline-packages\tdengine-tdgpt-offline-assets-3.4.1.0.0325-windows-x64.tar if errorlevel 1 ( echo TDgpt installation failed exit /b 1 ) echo TDgpt installed successfully校验安装结果静默安装后检查退出码0 成功非零 失败安装日志C:\TDengine\taosanode\log\install.log服务状态sc query Taosanode。安装器行为细节向导行为默认推荐安装源为Offline package离线模式先在与安装器同目录下按顺序查找tdengine-tdgpt-resource.tar、tdengine-tdgpt-resource.tar.gz、tdengine-tdgpt-resource-*.tar、tdengine-tdgpt-resource-*.tar.gz、tdengine-tdgpt-resource-*.tgz再回退到配置的资源包文件名和旧版tdengine-tdgpt-offline-assets-version-windows-x64.tar对应tdgpt.iss中的DetectDefaultOfflinePackage/DetectDefaultModelResourcePackage打包时未指定--resource-package-url时win_release.py用--resource-package-version默认1.0拼出默认下载 URL且资源包默认采用.tar.gz命名模板见 win_release.py在线安装仍然可用Windows 服务自动安装不再作为可选复选框PrepareToInstall阶段会先停掉旧服务与模型服务等待taosanode-winsw.exe、python\runtime\python.exe、python3.dll解锁后才继续覆盖见 tdgpt.iss升级安装默认复用已有venvs和模型文件升级时安装目录被锁定为已注册目录注册表或服务 ImagePath 解析二者不一致会报错要求先修复离线首次安装必须提供一个外部 tar 包离线升级可将 tar 路径留空以复用当前运行时与模型文件/OFFLINE命令行参数为静默安装预填离线包路径。包装脚本行为start-taosanode.bat、stop-taosanode.bat、status-taosanode.bat要求install_dir\venvs\venv\Scripts\python.exe存在每个脚本开头都有python_guard检查并给出明确报错win_release.pystart-model.bat、stop-model.bat、status-model.bat同样要求主 venv Python这些包装脚本不回退到系统pythonstart-model.bat未指定模型名时默认allstop-model.bat同样默认allstart-taosanode.bat会先探测Taosanode服务是否存在存在则走start-service否则走前台start随后都会调用wait-ready --timeout 90确认就绪。服务定义WinSW 服务配置见 taosanode-service.xml服务 ID 为Taosanode使用主 venv Python 执行taosanode_service.py start --foregroundPYTHONPATH指向lib配置指向cfg\taosanode.config.py日志重定向到log\taosanode.app.log启动方式为自动延迟启动失败策略为重启间隔 10 秒、20 秒后放弃。服务与模型命令安装完成后net start Taosanode net stop Taosanode sc query Taosanode C:\TDengine\taosanode\bin\start-taosanode.bat C:\TDengine\taosanode\bin\stop-taosanode.bat C:\TDengine\taosanode\bin\status-taosanode.bat C:\TDengine\taosanode\bin\start-model.bat C:\TDengine\taosanode\bin\start-model.bat all C:\TDengine\taosanode\bin\stop-model.bat all C:\TDengine\taosanode\bin\status-model.bat直接调用 Python 时应使用主安装 venvC:\TDengine\taosanode\venvs\venv\Scripts\python.exe C:\TDengine\taosanode\bin\taosanode_service.py start C:\TDengine\taosanode\venvs\venv\Scripts\python.exe C:\TDengine\taosanode\bin\taosanode_service.py model-start all日志Windows 下重要日志文件install_dir\log\install.loginstall_dir\log\uninstall.loginstall_dir\log\install-progress.loginstall_dir\log\taosanode-service.loginstall_dir\log\taosanode.app.loginstall_dir\log\model_*.log说明服务管理器日志为taosanode-service.logWinSW 包装层日志taosanode-service.wrapper.log、*.out.log、*.err.log不属于当前默认日志流程。故障排查打包在调用 ISCC 之前失败检查打包机 Python 版本必须是 3.10/3.11/3.12检查版本号格式只能数字与点长度 16检查输出目录是否可被删除并重建clean_release_dir会整体清空-o指定的目录。找不到 ISCC安装 Inno Setup 6ISCC.exe不在默认路径时显式传--iscc-path。服务包装脚本报告主 Python 缺失确认install_dir\venvs\venv\Scripts\python.exe存在离线安装若环境导入失败携带有效离线 tar 重新运行 setup在线安装重新运行 setup 以便重建主 venv。服务启动命令返回但就绪未确认检查install_dir\log\taosanode-service.log与taosanode.app.log运行status-taosanode.bat运行sc query Taosanode。与仓库代码的对应关系本文论述均可在以下仓库文件tools/tdgpt目录下中找到依据便于进一步阅读与验证packaging/win_release.py——打包主入口、参数解析、载荷整理、脚本生成、ISCC 调用packaging/build_offline_assets.py——离线 tar 组装、seed 复用、清单生成packaging/installer/tdgpt.iss——Inno Setup 向导、VC/Python 预检、静默参数、升级保护逻辑packaging/installer/taosanode-service.xml——WinSW 服务定义packaging/test_win_release.py——copy_icon_file、copy_enterprise_files的单元测试script/install.py——安装逻辑、MODEL_SPECS模型规格、tar.exe覆盖约束script/taosanode_service.py——服务与模型统一管理脚本。TDgpt 本身是 TDengine 的 AI 分析节点其算法能力异常检测、预测、相关性分析等分布在 tools/tdgpt/taosanalytics安装包中的lib/taosanalytics即来自该目录本文不再展开。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考