👉 项目官网:https://www.python-office.com/ 👈

👉 本开源项目的交流群 👈

github star gitee star atomgit star

AI编程 AI交流群

大家好,这里是程序员晚枫,正在all in AI编程实战,全网同名。


开场 20 秒
“程序在我电脑跑得欢,用户一双击就闪退/报错/被杀毒拦截。”
本讲 15 分钟,给你一套“远程问诊”三板斧:日志、调试模式、符号表;再附送 10 个高频错误速查表,做到用户截图即可秒回解决方案。


9.1 三板斧:让用户帮你抓日志(3 min)

  1. 日志开关
    .spec 里打开 debug 与控制台,方便复现:
1
2
3
4
5
exe = EXE(
...
debug=True, # 输出详细回溯
console=True, # 保留黑框
)

发“诊断版”给用户,复现后立刻关闭。

  1. 运行时钩子输出 _MEIPASS 路径
1
2
3
4
5
# runtime_hook_log.py
import sys, os, pathlib, datetime
log = pathlib.Path.home() / 'myapp_debug.log'
with log.open('a', encoding='utf-8') as f:
f.write(f"{datetime.datetime.now()} _MEIPASS={getattr(sys, '_MEIPASS', 'None')}\n")

.spec 加入

1
a = Analysis(..., runtime_hooks=['runtime_hook_log.py'])
  1. 一键收集脚本(Windows 示例)
1
2
3
4
5
@echo off
echo 正在收集信息...
myapp.exe > log.txt 2>&1
echo log.txt 已生成,请把文件发给我们
pause

9.2 本地复现:用 --onedir 调试(2 min)

把生产包 --onefile--onedir,直接运行 dist/myapp/myapp.exe

  • 报错信息完整
  • 缺 DLL/资源立即可见
    修复后再 --onefile 出正式包。

9.3 10 个高频错误速查表(8 min)

错误文本场景根因一键修复
Error loading Python DLLWin 7缺 VC++ 运行库附带 vc_redist.x64.exe 或静态编译
Failed to execute script main任何平台资源路径错误_MEIPASS 定位 + 检查 --add-data
ImportError: libtorch.soLinux系统缺 .so--add-binary "/usr/lib/libtorch.so:."
Could not find Qt platform pluginPyQt/PySide插件未打包hiddenimports=['PyQt5.QtCore'] + datas=[(qt_plugins, 'plugins')]
Illegal instruction (core dumped)LinuxCPU 指令集过高torch-cpu 或在 CI 加 -march=x86-64
Windows Defender 报毒所有UPX/签名/启发式关闭 UPX、代码签名、提交误报
No module named 'sklearn.*'动态 import隐藏导入--hidden-import sklearn.utils._cython_blas
_tkinter.TclError: no display nameLinux 无桌面无 $DISPLAY判断 os.environ.get('DISPLAY') 给出 CLI fallback
macOS “damaged”Gatekeeper未签名codesign --force --deep --sign - 自签名
闪退无窗口GUI 程序加了 --noconsole 但 print 报错发调试版 --console 先看回溯

9.4 远程调试黑科技(2 min)

  1. faulthandler 在崩溃时自动写栈
1
2
import faulthandler, tempfile, os
faulthandler.enable(open(os.path.join(tempfile.gettempdir(), 'crash.log'), 'w'))
  1. 崩溃自动上传
1
2
3
4
5
6
7
import requests, traceback, platform
try:
main()
except Exception:
with open('crash.log', 'w') as f:
traceback.print_exc(file=f)
requests.post("https://your-api.com/upload", files={'file': open('crash.log','rb')})

9.5 用户沟通模板(可复制)

1
2
3
4
5
6
【诊断版下载】  
链接:https://github.com/xxx/release/dbg_v1.2.3
使用步骤:
1. 解压后双击 Debug_MyApp.exe
2. 闪退后把生成的 myapp_debug.log 发给我们
3. 我们会 24h 内回复修复包

小结 & 作业(30 秒)

• 三板斧:诊断版 + 日志 + --onedir 本地复现
• 10 个错误速查表贴在 README,减少 80 % 重复提问
• 作业:给自己项目加崩溃日志上传,并验证能否收到 traceback

下节课《第十讲:进阶主题——自解压安装包、插件化、商业保护》教你把 exe 做成安装器、加授权、再加壳。


大家在学习课程中有任何问题,欢迎+微信和我交流👉我的联系方式:微信、读者群、1对1、福利

扫一扫,领红包

美团红包

🎓 AI 编程实战课程

程序员晚枫专注AI编程培训,通过 《30讲 · AI编程训练营》,让小白也能用AI做出实际项目。帮你从零上手!