PyInstaller打包KivyMD应用报错无法导入StiffScrollEffect怎么解决
PyInstaller打包KivyMD应用缺失kivymd.effects模块解决方案
报错原因
该报错由PyInstaller静态依赖检测的局限性导致:MDDataTable组件内部的KV代码通过#:import动态导入了kivymd.effects.stiffscroll.StiffScrollEffect,PyInstaller无法识别KV文件中的导入逻辑,因此打包时没有将该模块纳入最终程序,运行时就会抛出模块缺失错误。
解决方案
方案一:修改spec文件添加隐藏导入
打开你的main.spec文件,找到Analysis配置块中的hiddenimports参数,补充缺失的模块:
a = Analysis(['main.py'], pathex=['C:\\wamp64\\www\\implementation\\kivy_venv\\trial'], binaries=[], datas=added_files, # 此处修改,添加缺失的依赖 hiddenimports=[ 'kivymd.effects', 'kivymd.effects.stiffscroll' ], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False)
修改完成后,使用spec文件重新执行打包命令即可:pyinstaller main.spec
如果后续运行还出现其他类似的模块缺失报错,将报错的模块名也添加到hiddenimports列表中即可。
方案二:主文件手动导入依赖
不需要修改spec文件,直接在main.py的导入区域添加一行导入语句,让PyInstaller能直接检测到该依赖:
# 添加到main.py的任意导入位置即可 from kivymd.effects.stiffscroll import StiffScrollEffect
修改完成后正常重新打包即可。
内容的提问来源于stack exchange,提问作者fyunusa
相关产品推荐
相关产品推荐

