我正在使用pyinstaller为我们的PyQT工具打包Windows可执行文件。
pyinstaller.exe main.py --path path_to_pyqt_libs --distpath outputFolder --name toolName
5 次中有 4 次,该工具找不到 matplotlib 后端 TKagg:
19537 INFO: Matplotlib backend "TkAgg": ignored
DLL load failed: The specified module could not be found.
该过程仍然"成功完成",但由于缺少库,我无法运行该工具。 偶尔(~20% 的时间(,找到库("添加"(,一切正常。 在具有相似环境的 2 台不同计算机上会发生相同的行为。
让我发疯的是,它有时无需任何更改即可工作。
知道为什么会发生这种情况以及如何解决这个问题吗?
环境:
- 视窗 7 sp1 64 位
- 蟒蛇 3.5.0
- pyQt 5
- pyinstaller 3.2.1
- 马特普洛库 2.0.2
更新:以下最小代码足以重现错误:
#!/usr/bin/env python3
from PyQt5.uic import loadUiType
from matplotlib.backends.backend_qt5agg import (
FigureCanvasQTAgg as FigureCanvas,
NavigationToolbar2QT as NavigationToolbar)
if __name__ == '__main__':
pass
如果您在 Python shell 中执行此操作时遇到相同的错误:
import matplotlib.backends._tkagg
然后,您必须安装可视C++可再发行组件包。我遇到了完全相同的问题并安装了解决它的方法。
此外,我必须执行此隐藏导入以避免tkinter错误:
--hidden-import='PIL._tkinter._finder
这个答案就是解决方案