在 14.04 上升级 python 后 Apt 损坏 - 没有名为“lsb_release”的模块

在 14.04 上升级 python 后 Apt 损坏 - 没有名为“lsb_release”的模块

我最近的一个项目需要 Python3 的更新版本,所以我从源代码构建了它;我相信我把事情弄得有点乱了。所有基于 apt 的操作现在都以错误结束:

(Reading database ... 320897 files and directories currently installed.)
Removing nvidia-prime (0.6.2) ...
Traceback (most recent call last):
  File "/usr/bin/lsb_release", line 28, in <module>
    import lsb_release
ImportError: No module named 'lsb_release'
dpkg: error processing package nvidia-prime (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 nvidia-prime
E: Sub-process /usr/bin/dpkg returned an error code (1)

我相信 nvidia 错误只是一个症状而不是一个问题。当我尝试添加源并遇到以下情况时发现了这一点:

sudo: add-apt-repository: command not found

我很乐意将此盒子升级到 14.10,但所有基于升级的命令都会返回相同的 lsb_release 消息。关于恢复我的包管理能力有什么建议吗?

编辑:使用 python 路径信息更新

lars@whorus:~/Downloads/Python-3.4.2$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root       9 Dec 18 10:36 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root       9 Apr 18  2014 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3349512 Mar 22  2014 /usr/bin/python2.7
lrwxrwxrwx 1 root root       9 Mar 23  2014 /usr/bin/python3 -> python3.4
-rwxr-xr-x 2 root root 4061272 Apr 11  2014 /usr/bin/python3.4
-rwxr-xr-x 2 root root 4061272 Apr 11  2014 /usr/bin/python3.4m
lrwxrwxrwx 1 root root      10 Mar 23  2014 /usr/bin/python3m -> python3.4m

答案1

Ubuntu 14.04lsb_release.py也安装了适用于 Python 2.7 的文件,并且lsb_release似乎也可以在 python2.7 下工作。您可以通过执行以下操作来尝试此操作:

python2.7 /usr/bin/lsb_release

如果有效,请备份该文件/usr/bin/lsb_release并将第一行更改为:

#! /usr/bin/python2.7

(您可以尝试这些-Es选项,我最初会将它们排除在外)。

一旦可以apt-get再次运行,请重新安装 python3 及其依赖项。您可以通过使用apt-cache depends python3和 使用apt-rdependsor reverse-depends(两者都必须安装)来递归地获取依赖项来确定直接依赖项。

答案2

您可能已将默认 python 覆盖为自定义版本。

head /usr/bin/lsb_release

查看标题上的内容。将其强制为 /usr/bin 中的特定 python 版本应该可以解决该问题。

就像我的情况一样,如果它写入/usr/bin/python/usr/bin/lsb_release则将其更改为

/usr/bin/python2.7

o/w,将其更改为

/usr/bin/python3.4

相关内容