Conda环境下PyInstaller打包导入第三方依赖触发Win32异常如何解决
Conda环境PyInstaller打包导入第三方库崩溃解决方案
你观察到的日志中"not found"提示属于PyInstaller加载模块的正常输出,不是导致崩溃的原因,无需针对该提示处理。可按照以下步骤逐一排查:
- 确认PyInstaller属于当前虚拟环境
很多场景下的打包异常都是因为误用了全局安装的PyInstaller打包虚拟环境内的项目,依赖版本不匹配导致崩溃。执行where pyinstaller检查返回路径,若不是C:\miniconda3\envs\my_env\Scripts\pyinstaller.exe,先激活当前虚拟环境,再执行pip install pyinstaller将PyInstaller安装到虚拟环境内后重新打包。 - 替换Conda源安装的第三方库为pip源版本
Conda源提供的部分第三方库(比如numpy、pandas等数值计算库)会绑定MKL等Conda专属编译依赖,和PyInstaller的打包逻辑兼容性很差。你可以先做最小复现:新建仅包含一条导入语句(比如import numpy)的测试脚本打包测试,如果崩溃,执行conda remove 对应库名 --force && pip install 对应库名替换为pip版本后重新打包。 - 补全打包时的dll搜索路径
你的崩溃日志卡在ctypes模块加载阶段,大概率是未搜索到Conda虚拟环境内的系统级dll。可以在打包命令中额外添加虚拟环境的依赖路径:pyinstaller --debug=all --paths C:\miniconda3\envs\my_env\Lib\site-packages --paths C:\miniconda3\envs\my_env\Scripts --paths C:\miniconda3\envs\my_env\Library\bin main.py - 升级PyInstaller版本
你当前使用的PyInstaller 3.x版本对Python3.7和Conda环境的兼容性较差,在虚拟环境内执行pip install --upgrade pyinstaller升级到最新稳定版后重新打包测试。 - 临时关闭安全软件测试
部分杀毒软件、系统防火墙会拦截PyInstaller打包程序的动态dll加载行为,导致无报错直接崩溃,可临时关闭安全软件后运行exe验证是否为拦截导致。
内容的提问来源于stack exchange,提问作者Jodo
相关产品推荐
相关产品推荐

