使用 pyinstaller 对 python 程序进行打包,由于包含 matplotlib 库,最终在生成 exe 后,程序执行的时候会出现错误:
ImportError: No module named Tkinter
使用 pip list 查询,发现确实没有 Tkinter 这个库,但是在安装目录下,明显有 tcl 这个文件夹。在命令行中进行测试:
完全正常!!!
然后,我就开始了痛苦的整改过程:
1,重新安装 Tkinter
使用命令行 pip install Tkinter 发现没有这个库,安装失败。
下载 tk8.4.4-src.tar.gz 和 tcl8.4.4-src-tar.gz ,解压后发现在win10 下无法使用 ./configure配置,安装失败。
安装这步行不通,换。
2,检测 Tkinter 安装正确性与用法正确性。
测试 Tkinter._test(),执行正常。
python 版本为2.7,导入时应该使用 import Tkinter,检查所有导入文件,正常。
修改环境变量,添加 TCL_LIBRARY=C:\Python27\tcl\tcl8.5 和 TK_LIBRARY=C:\Python27\tcl\tk8.5,检查修改状态,正常。
以上,但重新编译 exe 文件,错误依然在。
最后,终于找到症结所在:
pyinstaller 很傻逼,不会自动识别 matplotlib 内部引用的 Tkinter 库,必须在工程文件中显性的 import Tkinter 才行!
解决方法就简单了,在工程中引用 Tkinter ,注意大小写,再编译,终于成功了.