如何修复“ python安装损坏”?


37

我使用的是从13.10升级到14.04(目前为dev,可以在几个小时内稳定)do-release-upgrade并遇到以下问题:

Can not upgrade 

Your python install is corrupted. Please fix the '/usr/bin/python' symlink.

经过一番混乱后,我解决了问题,因此我想在这里分享我的解决方案。希望这可以帮助某人。

Answers:


53

我的问题原来仅是由于/usr/bin/python错误消息中所建议的符号链接发生了变化。我正在使用update-alternatives/usr/bin/python因此它指向/etc/alternatives/python。事实证明,do-release-upgrade使用此符号链接确实很严格,仅选择python2.7并update-alternatives不够,所以我最终将其强制为其原始状态:

sudo ln -sf /usr/bin/python2.7 /usr/bin/python

这就解决了问题。

如果这对您不起作用,那么我猜您安装了真正损坏的python。我建议

sudo apt-get install --reinstall python

@BenjaminKohl很高兴它有所帮助:)
4ae1e1 2014年

没有/etc/alternatives/python链接到/usr/bin/python2.7?还有其他事情有更高的优先级吗?
heemayl 2015年

恐怕您会把它倒退.... /usr/bin/python2.7是实际的二进制文件,它永远不应该是符号链接,符号链接是/etc/alternatives/python..您介意再次检查它吗?
heemayl

@heemayl对不起,我误读了您的评论和错字。/usr/bin/python是的符号链接/etc/alternatives/python(当然/usr/bin/python2.7是二进制文件,但这不是这里的问题)。
4ae1e1

是的,/etc/alternatives/python然后将其链接到您选择的任何对象(不一定是/usr/bin/python2.7-为什么update-alternatives在这种情况下您甚至需要?),但要点是,/usr/bin/python当您使用符号链接时是不允许的do-release-upgrade
4ae1e1


5

在Ubuntu 18.10中,仍然存在相同的问题。

/ usr / bin / python链接到旧版本。甚至晚于2.7可用,但是此超级智能过程要求(在18.10中!)P 2.7。所以我给了它,它被接受了。

这为我解决了:

1)删除/ usr / bin / python做 sudo rm /usr/bin/python

2)创建一个新链接 sudo ln -sf /usr/bin/python2.7 /usr/bin/python

在18.10中,我不能使用sudo update-alternatives --remove-all pythonsudo apt-get install --reinstall python

为我工作。希望它也对您有帮助。


ls -sf会覆盖目标,因此1)没有意义,而2)正是我的回答告诉您要做的。真是浪费...
4ae1e1

不要说:您的报价是错误的,我说的与您所说的“ ... --reinstall python”相反。是的,我对18.10的体验与您的不同,我对此进行了解释。根本不需要大胆的评论。
opinion_no9

看到“如果这对您不起作用,那么我猜您安装了真正损坏的python”。
4ae1e1

基本上,这是一课:您阅读周围的环境并了解原因,而不仅仅是挑剔存在的任何代码块,将它们粘贴到终端中(危险),然后看看有什么问题。顺便说一句,您sudo rm仍然毫无意义。
4ae1e1

1
没错,它适用于18.10。谢谢。
Wings

1

对于Ubuntu 19.04,默认的python版本是3.7。升级到Ubuntu 19.10时遇到了相同的错误,以下内容有所帮助:

sudo apt-get install --reinstall python3
sudo ln -sf /usr/bin/python3.7 /usr/bin/python3

如果您的python软件包有非常严重的问题,剩下的唯一方法是强制删除它,然后重新安装它:

sudo dpkg --remove --force-remove-reinstreq --force-depends python3
sudo apt-get -f install

0

如果您遇到此问题,/usr/bin/python3则:

sudo update-alternatives --remove-all python3
sudo ln -sf /usr/bin/python3.6 /usr/bin/python3

确保符号链接python3.6而不是3.7。升级Ubuntu 18.10到时至少需要这样做19.04

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.