问题背景
我使用 pyqt 在开发一款跨平台的文件检索工具,使用 pyinstaller 打包依赖。为了更好的统计程序的 崩溃日志,决定使用 sentry 来自动化收集。
使用共有云的方案,安装 sentry 官方给的 demo 程序很快就跑通了。使用 pyinstaller 可以成功打包,但程序无法启动,日志报错为
解决过程
ModuleNotFoundError: No module named 'sentry_sdk.integrations.logging
根据错误提示在 pyinstaller
脚本中加入隐含导入
pyinstaller --hidden-import sentry_sdk.integrations.logging
再次打包并运行,又提示缺乏 sentry_sdk.integrations.stdlib
, 手动将此依赖写入 pyinstaller 脚本中再次提示缺乏sentry_sdk.integrations.deque
没完没了了,通过错误关键字找到了这个 pyinstaller-issue-4755 引到了 pyinstaller 的官方文档
我尝试使用 pyinstaller --hidden-import sentry_sdk.integrations.*
却发现 pyinstaller
在打包时提示 无法分析 sentry_sdk.integrations.*
中间搜索了很多,最后得到此方案
在 pyinstaller
同级目录下编辑一个文件 hook-sentry_sdk.integrations.py
写入这些东西
hiddenimports = [ 'sentry_sdk.integrations.argv', 'sentry_sdk.integrations.logging', 'sentry_sdk.integrations.stdlib', 'sentry_sdk.integrations.threading', 'sentry_sdk.integrations.atexit', 'sentry_sdk.integrations.rq', 'sentry_sdk.integrations.trytond', 'sentry_sdk.integrations.excepthook', 'sentry_sdk.integrations.modules', 'sentry_sdk.integrations.dedupe' ]
为 pyinstaller 增加一条打包参数
--additional-hooks-dir .
问题解决了