- Add wxauto package with WeChat UI automation and message handling capabilities - Implement job_extractor.py for automated job posting extraction from WeChat groups - Add job_extractor_gui.py providing graphical interface for job extraction tool - Create comprehensive documentation in Chinese covering GUI usage, multi-group support, and quick start guides - Add build configuration files (build_exe.py, build_exe.spec) for packaging as standalone executable - Include utility scripts for WeChat interaction (auto_send_msg.py, get_history.py, receive_file_transfer.py) - Add project configuration files (pyproject.toml, setup.cfg, requirements.txt) - Include test files (test_api.py, test_com_fix.py) for API and compatibility validation - Add Apache 2.0 LICENSE and comprehensive README documentation - Configure .gitignore to exclude build artifacts, logs, and temporary files
3.3 KiB
3.3 KiB
打包问题修复说明
问题描述
打包后的exe运行时报错:
[WinError -2147221008] 尚未调用 CoInitialize。
问题原因
这是因为wxauto使用了Windows的COM组件(UIAutomation),在多线程环境中需要显式初始化COM组件。打包后的exe环境与开发环境不同,需要手动初始化。
解决方案
1. 安装pywin32
pip install pywin32
2. 代码修改
在 job_extractor_gui.py 中:
- 导入pythoncom模块:
import pythoncom
- 在线程函数中初始化COM:
def run_task(self):
# 初始化COM组件(每个线程都需要)
pythoncom.CoInitialize()
try:
# 原有代码...
pass
finally:
# 清理COM组件
pythoncom.CoUninitialize()
3. 更新打包配置
在 build_exe.spec 中添加pywin32相关模块:
hiddenimports=[
# ... 其他模块
'pythoncom',
'pywintypes',
'win32com',
'win32com.client',
'win32api',
'win32con',
'win32gui',
'win32process',
],
重新打包步骤
方法一:使用批处理脚本(推荐)
- 双击运行
build.bat - 脚本会自动检查并安装pywin32
- 等待打包完成
方法二:手动打包
# 1. 安装依赖
pip install pywin32 pyinstaller
# 2. 清理旧文件
rmdir /s /q build dist
# 3. 打包
pyinstaller build_exe.spec
# 4. 测试
dist\微信岗位提取工具.exe
验证修复
- 运行打包后的exe
- 配置目标群组和API密钥
- 点击"开始任务"
- 如果能正常连接微信并监听,说明修复成功
其他可能的问题
问题1:缺少DLL文件
如果提示缺少某些DLL文件,可能需要:
- 安装 Visual C++ Redistributable
- 或使用
--collect-all pywin32选项
问题2:杀毒软件拦截
某些杀毒软件可能会拦截打包后的exe:
- 添加到白名单
- 或临时关闭杀毒软件
问题3:权限问题
如果提示权限不足:
- 以管理员身份运行
- 检查文件夹权限
测试清单
打包完成后,请测试以下功能:
- 程序能正常启动
- 配置能正常保存
- 能连接微信
- 能添加监听
- 能接收消息
- 能提取岗位信息
- 能显示在列表中
- 能查看详情
- 能导出数据
技术说明
COM组件初始化
COM(Component Object Model)是Windows的组件技术。使用COM组件的程序需要:
- 单线程公寓(STA):主线程自动初始化
- 多线程公寓(MTA):每个线程需要手动初始化
wxauto使用UIAutomation(基于COM),在GUI程序的工作线程中需要:
- 调用
pythoncom.CoInitialize()初始化 - 调用
pythoncom.CoUninitialize()清理
PyInstaller打包
PyInstaller打包时需要注意:
- 显式声明隐藏导入(hiddenimports)
- 包含数据文件(datas)
- 收集所有相关包(collect-all)
参考资料
更新日志
2026-02-11
- 修复COM组件初始化问题
- 添加pywin32依赖
- 更新打包配置
- 完善错误处理