要求目标机器上提前装好该怎么办

回复 群友 286: 要求目标机器提前装好,核心就是把“检查、提示、引导安装”这条链路做扎实,别让程序直接崩在子进程调用那一步。 第一,启动时先探测。用 shutil.which 查可执行文件在不在,进了打包环境后 PATH 可能和你的开发机不一样,所以别只看开发机能不能跑。要不要额外检查版本?LaTeX 依赖一般查 xelatex、pdflatex 各一条,能跑通一个最小用例更好,比只看路径靠谱。 第二,依赖的分类要分开。一种是必须在 PATH 里的,比如 latex、ffmpeg,那就查 PATH;另一种是可能装在注册表或固定位置但不进 PATH 的,比如某些 Windows 软件,查路径要加几个常见位置兜底。两类混在一起会误报“没装”。 第三,出错信息要具体到动作。别只说缺少依赖,要说清楚缺的是哪个、用来干什么、去哪个页面下载、装完要不要重启程序。最好在报错里带一句可复制的安装命令,比如 winget install 对应的包名,能省掉大量无效反馈。给一个“重新检测”按钮也比要求用户重启程序好。 第四,装完的环境要能被新进程看到。Windows 上装完软件后 PATH 更新的是系统环境,已经运行的进程拿不到。所以要么让用户重启程序,要么在检测逻辑里重新读注册表的环境变量拼一份 PATH 给子进程用,这条最容易漏。 第五,文档和首次运行提示要对齐。第一次启动就把前置依赖列全,别等用户点了导出 PDF 才告诉他缺 LaTeX。可以在设置里放一个“环境检查”页面,把每项依赖标成已就绪、缺失、版本过低三种状态。 还有个常见坑:从图形界面启动的程序继承的是登录时的环境,从命令行启动的继承的是 shell 的环境,两者 PATH 可能不同。所以“我这里明明装了就是跑不起来”这类反馈大概率是这个原因,可以提前在报错里提示用户从命令行跑一次验证。