使用PyInstaller打包脚本时遭遇pywintypes.error加载库错误
解决PyInstaller打包32位Python脚本时的LoadLibraryEx错误
嘿,针对你在Windows 10上用32位Python打包脚本时遇到的pywintypes.error: (2, 'LoadLibraryEx', 'The system cannot find the file specified.')错误,我整理了几个针对性的解决方案,都是实际踩坑后验证有效的:
先排查核心依赖的位数匹配问题
你用的是32位Python,所有第三方库必须是32位版本,这是32位环境下打包最容易踩的坑:
- 先检查你的
matplotlib(pylab是它的子模块)、scipy、stl_tools是不是32位的。可以用pip list查看,或者直接重新安装指定平台的版本:pip install --platform win32 matplotlib scipy stl_tools --force-reinstall - 另外,PyInstaller版本要兼容Python2(从你的
print和raw_input语句看你用的是Python2.7),建议安装3.6版本的PyInstaller,这是支持Python2的最后几个稳定版:pip install pyinstaller==3.6
手动补全PyInstaller漏掉的DLL
PyInstaller的自动依赖扫描偶尔会漏掉32位系统DLL或者第三方库的依赖文件,你可以这样排查和补全:
- 先开启调试模式,查看具体缺失的文件:
运行后看输出日志,找到提示“找不到”的文件路径,记下来。pyinstaller --debug=imports your_script_name.py - 用
--add-data参数把缺失的文件打包进去。比如如果缺失的是32位的msvcr90.dll,它在Windows的C:\Windows\SysWOW64目录下(64位系统存放32位系统文件的路径),打包命令就改成:
这里的pyinstaller --onefile --add-data "C:\Windows\SysWOW64\msvcr90.dll;." your_script_name.py;.表示把DLL放到exe的同一目录下。
处理stl_tools的特殊依赖
你的脚本用到了text2png,它依赖字体文件和PIL的DLL,这些也容易被PyInstaller漏掉:
- 手动指定字体文件并打包:比如用系统自带的Arial字体,修改脚本里的
text2png调用:text2png(text, 'Tempfile', fontsize=90, fontpath='Arial.ttf') - 然后打包时把字体文件加进去:
pyinstaller --add-data "C:\Windows\Fonts\Arial.ttf;." your_script_name.py
先尝试非单文件模式排查
有时候--onefile模式会导致DLL加载路径混乱,先试试打包成文件夹模式:
pyinstaller your_script_name.py
然后去生成的dist文件夹里运行exe,如果能正常运行,说明问题出在单文件模式的路径处理上,再回到前面的步骤调整参数。
内容的提问来源于stack exchange,提问作者Nirvrex
相关产品推荐
相关产品推荐

