問題背景
我使用 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 .
問題解決了