我最近的一个项目需要 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-rdepends
or 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