pyinstaller打包streamlit同普通的Python程序打包不一样,一不小心就会打包失败,在我的自己的一个工作项目中,需要打包一个包含cv2包的程序,打包完成了,结果运行的时候提示没有cv2模块,然后就在网上各种寻找,各种测试。参考利用pyinstaller打包streamlit移植到其他电脑上使用这篇文章还有别的相关文章,终于解决模块缺失的问题。
因为是有引入streamlit,所以打包的时候用.spec文件打包,解决模块缺失是在.spec文件配置中进行修改,在Analysis配置信息的hiddenimports字段写入缺失的模块(前提是未打包文件是可以运行的)示例如下(根据自己的实际情况填写内容):
a = Analysis(
['run_webprocess.py'],
pathex=['.'],
binaries=[],
datas=datas,
hiddenimports=['cv2','mathAdjust','StringAdjust'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
上示例中的"mathAdjust","Stringadjust"是自己编写的类,在打包的时候,没有配置,打包完也是找不到相关模块的,所以要提前配置。配置完成后再次打包.spec文件,就可以正常运行了。
希望本文可以帮到pyinstaller打包streamlit中遇到问题的人。