执行`sudo ubuntu-drivers autoinstall`安装NVIDIA驱动时出现UnboundLocalError错误的求助
执行
sudo ubuntu-drivers autoinstall安装NVIDIA驱动时出现UnboundLocalError错误的求助 看起来你遇到的是ubuntu-drivers工具里的一个小bug,我来帮你分析解决:
错误原因
从你贴出的Python代码能直接定位问题:
在nvidia_desktop_pre_installation_hook函数里,脚本尝试解析NVIDIA驱动版本号时,如果遇到版本号不是纯数字的情况(比如带-open后缀的驱动,像nvidia-driver-535-open),会触发ValueError进入except块,但这里只是pass,没给version变量赋值。而finally块不管try是否成功都会执行,此时version变量还未定义,就抛出了UnboundLocalError。
解决方案
方案一:手动安装指定驱动版本(推荐,操作更简单)
先查看系统推荐的可用驱动:
ubuntu-drivers devices输出里会标注推荐的驱动版本,比如类似
nvidia-driver-535 - third-party non-free recommended这样的内容。直接手动安装该驱动:
sudo apt install nvidia-driver-535把
535换成你看到的实际推荐版本号即可,这样能直接绕开有bug的脚本逻辑。
方案二:修复ubuntu-drivers的Python脚本
如果你想修复原脚本的问题,可以按以下步骤操作:
编辑有问题的脚本文件:
sudo nano /usr/lib/python3/dist-packages/UbuntuDrivers/detect.py找到
nvidia_desktop_pre_installation_hook函数,修改成以下内容:def nvidia_desktop_pre_installation_hook(to_install): '''Applies changes that need to happen before installing the NVIDIA drivers''' with_nvidia_kms = False # Enable KMS if nvidia >= 470 version = 0 # 给version设置初始值 for package_name in to_install: if package_name.startswith('nvidia-driver-'): try: version = int(package_name.split('-')[-1]) except ValueError: version = 0 # 解析失败时赋值为0,避免变量未定义 finally: with_nvidia_kms = version >= 470 if with_nvidia_kms: set_nvidia_kms(1)保存文件(按
Ctrl+O,回车确认,再按Ctrl+X退出nano),然后重新运行:sudo ubuntu-drivers autoinstall
备注:内容来源于stack exchange,提问作者pzrq




