安装 nvidia 驱动程序时,ubuntu-drivers “UnboundLocalError:分配之前引用的局部变量‘版本’”

Jef*_*eff 40 nvidia ubuntu-drivers

在最新的内核升级后,我在重新安装 nvidia 驱动程序时遇到了麻烦。通常,ubuntu 驱动程序会处理它,但这次不行。

我已经完成了sudo apt purge -y nvidia-*,这通常可以解决重新安装时的问题,但这没有帮助。

当我运行时ubuntu-drivers install,我收到此错误:

Traceback (most recent call last):
  File "/usr/bin/ubuntu-drivers", line 513, in <module>
    greet()
  File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/bin/ubuntu-drivers", line 413, in install
    command_install(config)
  File "/usr/bin/ubuntu-drivers", line 187, in command_install
    UbuntuDrivers.detect.nvidia_desktop_pre_installation_hook(to_install)
  File "/usr/lib/python3/dist-packages/UbuntuDrivers/detect.py", line 839, in nvidia_desktop_pre_installation_hook
    with_nvidia_kms = version >= 470
UnboundLocalError: local variable 'version' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

底部的 with_nvidia_kms 消息是否与 DKMS 有关?在切换到 ubuntu 驱动程序之前,我在过去让 dkms 工作时遇到了很多问题。

这一切一直有效,直到最近的升级,其中涉及内核。

小智 72

这涉及到一个已修复的错误,应该通过升级ubuntu-drivers-common包来解决。

sudo apt install --only-upgrade ubuntu-drivers-common 
Run Code Online (Sandbox Code Playgroud)

否则,手动解决方案包括编辑/usr/lib/python3/dist-packages/UbuntuDrivers/detect.py“文件并将第 835 行替换为:

version = int(package_name.split('-')[-2])
Run Code Online (Sandbox Code Playgroud)

我带来的唯一改变是 -2 而不是 -1。否则,它会在 try 块内引发 ValueError,并且不会为版本变量提供任何值。

  • 感谢您的精确修复。此处从 -1 更改为 -2 并且有效(Ubuntu 22.04): `sudo ubuntu-drivers install nvidia` (4认同)
  • 这也适用于我的 ubuntu 22.04。 (4认同)
  • 已发布修复程序(如答案中的链接所述)。通过软件更新程序 GUI 进行更新为我解决了这个问题。 (4认同)