web-dev-qa-db-ja.com

「python3インストールが破損しています」

Ubuntu 16.04.5 LTSから18.04にアップグレードしたいので、Sudo do-release-upgradeを実行しました。ダウンロードしてbionic.tar.gzを抽出すると、次のようになります:

Can not upgrade 

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

「pythonインストールが破損している」の修正方法 を見たので、Sudo ln -sf /usr/bin/python3.6 /usr/bin/python3が同様の問題だと思った。しかし、それはうまくいきませんでした(まだ同じエラーメッセージ)。

いくつかのpythonバージョンがあります。

ls /usr/lib | grep python
python2.7
python3
python3.5
python3.6

$ update-alternatives --display python3
python3 - auto mode
  link best version is /usr/bin/python3.6
  link currently points to /usr/bin/python3.6
  link python3 is /usr/bin/python3
/usr/bin/python3.5 - priority 1
/usr/bin/python3.6 - priority 2

python3を修正するにはどうすればよいですか?

7
mRcSchwering

16.04では、デフォルトのPython 3バージョンを使用する必要があります。 3.6ではなく .5 です。だから実行:

Sudo ln -sf /usr/bin/python3.5 /usr/bin/python3

それでもうまくいかない場合は、python3パッケージを再インストールしてください。

Sudo apt-get install --reinstall python3

ところで、update-alternatives --display python3update-alternatives: error: no alternatives for python3を提供するはずです。 Pythonの異なるバージョンはUbuntuの代替ではありません。

11
wjandrea

Pop!_OS 18.04でこの問題に遭遇し、18.10にアップグレードしようとしたところ、問題は/usr/bin/pythonではなく/usr/bin/python3のシンボリックリンクにあったことがわかりました。 pythonの代替として/usr/bin/python3.6を構成していたので(python3ではありません)、これを変更すると、期待どおりにdo-release-upgradeを実行できました。

エラーメッセージがpython3ではなく、pythonを指すようにします。


前に、問題で:

$ update-alternatives --display python
python - manual mode
  link best version is /usr/bin/python3.6
  link currently points to /usr/bin/python2.7
  link python is /usr/bin/python
/usr/bin/python2.7 - priority 1
/usr/bin/python3.6 - priority 2 

このように修正しました:

$ Sudo update-alternatives --remove-all python
$ Sudo ln -sf /usr/bin/python2.7 /usr/bin/python

以下のコメント も参照してください。これは、より正確な解決策を説明するもので、何が起こっているのか、どのように修正するのかをよりよく説明しています。

17

基本的にこの問題の解決策は、/usr/bin/pythonがUbuntuリリースが期待するPythonの正しいバージョンを指すようにすることです(たとえば、16.04ではPython2.7、18.04ではPython3.6)。

システムにPythonの複数のバージョンがインストールされている場合、update-alternativesを使用してそれらを管理している可能性があります。 Pythonのデフォルトの代替は、システムが期待する適切なバージョン(Ubuntu 18.04の3.6)であり、機能しません。

これが機能しない理由は、update-alternativesを使用するときに、/usr/bin/python3/etc/alternatives/python3を指し、/usr/bin/python3/usr/bin/python3.6を指すようにすることとまったく同じではないためです。

そのため、この問題の解決策は、多くの場合、update-alternativesを使用してPython3バージョンの管理を停止し、/usr/bin/python3がシステムが期待するPython3の正しいバージョンを指すようにします。

1
Diego Pino