Pyinstaller打包含Seaborn的Python2.7程序报错:找不到stream模块
解决PyInstaller打包Seaborn时"stream module not found"的问题
我之前也碰到过类似PyInstaller打包Seaborn的坑,结合你的环境(Python2.7、PyInstaller3.3.1、Seaborn0.8.1),给你几个可行的解决方案:
方案1:打包时手动添加隐藏导入
PyInstaller的自动依赖检测有时候会漏掉一些间接导入的模块,尤其是像Seaborn这种依赖多层第三方库的包。你可以直接在打包命令里指定要隐藏导入的stream模块:
pyinstaller --hidden-import=stream .\installTest.py
如果这个模块是某个包的子模块(比如scipy.io.stream),可以把完整路径补上:
pyinstaller --hidden-import=scipy.io.stream .\installTest.py
方案2:通过Spec文件配置依赖
如果命令行参数没效果,你可以先生成Spec文件,再手动编辑添加缺失的依赖:
- 生成Spec文件:
pyinstaller --name=installTest .\installTest.py
- 打开生成的
installTest.spec文件,找到hiddenimports字段,把stream(或对应的完整模块路径)添加到列表里:
hiddenimports=['stream'],
- 用修改后的Spec文件重新打包:
pyinstaller installTest.spec
方案3:补全Seaborn的依赖库
Seaborn0.8.1依赖matplotlib、pandas、numpy等库,先确认这些依赖都正确安装在你的Python2.7环境里(选兼容Python2.7的版本):
pip install matplotlib==2.2.5 pandas==0.24.2 numpy==1.16.6
确保依赖完整后再尝试打包,有时候缺失底层依赖也会导致这类奇怪的模块找不到问题。
额外提示
虽然不是直接解决当前问题,但还是得提一句:Python2.7已经停止维护多年,PyInstaller3.3.1也是很老的版本,后续大概率会碰到更多兼容性问题。如果项目允许,建议升级到Python3.x版本,搭配更新的PyInstaller和Seaborn版本,能避免很多这类打包坑。
内容的提问来源于stack exchange,提问作者PBareil
相关产品推荐
相关产品推荐

