背景
最近写了个查看硬件信息的脚本,用到wmi
。执行pyinstaller -F xxx.py
成功后,生成了exe。但是运行exe失败。错误如下:
错误中提到的包pythoncom
我是装好的,怎么都想不明白是为什么。
然后搜到了这篇文章《python3.8+pyinstaller调试正常,打包后运行失败(Module‘puwintypes’isn’t in frozen sys.path)》
以为找到了救星,结果按他的办法,在py代码里加入import pythoncom
,还是报错。
最终我搜到了这篇文章《ImportError: Module ‘pywintypes’ isn’t in frozen sys.path》
里面提到
说是pyinstaller
的版本问题。其实第一篇文章里的引用链接里也有提到,跟python
的高版本破坏性更新有关,导致很多东西不兼容。
所以我决定降低pyinstaller
版本。
解决方案
- 现在是2021-08-05,
pip
默认安装最新的pyinstaller
的版本号是4.5
。而我机器是python 3.7.9
- 第二篇文章提到
pyinstaller 4.1
以下都不支持python 3.8
。(我顿时泪流满面) - 找了一个合适的
pyinstaller
早期版本,比如3.4,也可以试试比的版本号,然后执行pip install pyinstaller==3.4
。 - 重新打包
exe
成功,运行成功。