Python脚本经PyInstaller编译后无法运行问题求助
解决PyInstaller编译Python工具时的依赖错误
从你提供的编译日志来看,主要有两个核心问题导致可执行文件运行出错,还有一个次要警告,我给你逐个梳理解决方法:
1. 解决ModuleNotFoundError: No module named 'win32com'错误
这个问题是PyInstaller没自动识别到win32com模块,通常是依赖包未安装或需手动指定隐藏导入:
- 先确认Python环境是否安装了
pywin32包,打开命令行执行:pip install pywin32 - 如果已安装仍报错,打包时手动告知PyInstaller包含该模块,两种方式可选:
- 直接在打包命令里加隐藏导入参数:
pyinstaller.exe --hidden-import win32com Controller.py - 或者修改生成的
Controller.spec文件,在hiddenimports列表中添加'win32com'(若用到具体子模块如win32com.client,也可一并加入),再用spec文件重新打包:pyinstaller.exe Controller.spec
- 直接在打包命令里加隐藏导入参数:
2. 解决api-ms-win-crt-*.dll缺失警告
这些dll是Visual C++ Redistributable for Visual Studio 2015-2019的核心组件,你的32位Python 3.6依赖该运行时,打包后的可执行文件也需要它们:
- 最稳妥的方式是安装对应版本的32位VC++运行库(因为你用的是Python36-32),安装后既能解决编译警告,同事运行工具时也不会因缺少运行库报错。
- 若不想让同事额外安装运行库,可手动找到这些dll(通常在
C:\Windows\SysWOW64目录,因是32位dll),复制到PyInstaller生成的dist文件夹,和可执行文件放在一起。
3. 处理Hidden import "mx.DateTime" not found!警告
这是psycopg2模块的可选依赖:如果你的代码没用到mx.DateTime,完全可以忽略该警告;若确实需要,执行pip install mx.DateTime安装即可,或打包时添加--hidden-import mx.DateTime参数。
按上述步骤修复后,重新执行打包命令,生成的可执行文件应该就能正常运行了。
内容的提问来源于stack exchange,提问作者TOuyang
相关产品推荐
相关产品推荐

