Я хочу обновить 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
?
upgrade
python3
do-release-upgrade
mRcSchwering
источник
источник
Ответы:
Вам нужно использовать версию Python 3 по умолчанию для 16.04. Это 3,5 , а не 3,6. Итак, бегите:
Если это не сработает, попробуйте переустановить
python3
пакет.Кстати,
update-alternatives --display python3
должен дать вамupdate-alternatives: error: no alternatives for python3
. Различные версии Python не являются альтернативами в Ubuntu.источник
Я только столкнулся с этой проблемой на Pop! _OS 18.04, пытаясь обновиться до 18.10, и оказалось, что проблема заключалась в символической ссылке для,
/usr/bin/python
а не для/usr/bin/python3
. Я/usr/bin/python3.6
настроил в качестве альтернативыpython
(неpython3
), и когда я изменил это, я мог работать,do-release-upgrade
как ожидалось.Я хотел бы, чтобы сообщение об ошибке указывалось
python
и не былоpython3
.До этого с проблемой:
Я исправил это так:
Также смотрите этот комментарий ниже, который описывает более точное решение, которое также лучше объясняет, что происходит и как это исправить.
источник
update-alternatives --remove-all python
был определенно ненужным излишним: все, что вам нужно было сделать, это использовать,update-alternatives --config python
чтобыpython
указать на последнюю версиюpython2.*
(напримерpython2.7
), а затем использовать,update-alternatives --config python3
чтобыpython3
указать конкретноpython3.6
- это версия Python 3 по умолчанию для 18.04.gnome-terminal
,update-manager
и т. Д. Вместо этого используйте виртуальные среды (документация здесь и здесь )Я наблюдал это сообщение об ошибке в Windows 10 1903 с запущенной WSL Ubuntu, когда хотел обновить систему с 16.04 LTS до 18.04 LTS .
После
do-release-upgrade
неудачи я переключилpython
альтернативы на каждый предложенный вариантupdate-alternatives --config python
и снова выполнил команду обновления. Это не помогло.Затем я проверил файл журнала,
/var/log/dist-upgrade/main.log
который содержал строкиПоэтому, хотя в сообщении об ошибке упоминается python3 , проблема заключается в python2 .
Сценарий обновления проверяет наличие
/usr/bin/python
ссылок/usr/bin/python2
на исходный кодDistUpgrade/DistUpgradeController.py
здесь: панель запуска ubuntuПоэтому одним из решений является полное удаление python из альтернативной системы и добавление ссылки вручную, как описано в самом популярном ответе.
Если вы не хотите удалять python из альтернативной системы, просто измените ссылку только на время процесса обновления:
Это сработало для меня.
В процессе обновления ссылка автоматически восстанавливается. Поэтому, когда обновление завершено, оно указывает на запись python в каталоге альтернатив:
Изменить: для подробной информации, проблема может также появиться, если вы обновляете с 18.04 LTS до 19.04, и anwser также относится к этой ситуации.
источник
По сути, решение этой проблемы состоит в том, чтобы
/usr/bin/python
указать правильную версию Python, которую ожидает релиз Ubuntu (например, в 16.04 был Python2.7, а в 18.04 - Python3.6).Если в вашей системе установлено несколько версий Python, возможно, вы используете их
update-alternatives
для управления. Не имеет большого значения, что ваш вариант по умолчанию для Python - это верная версия, которую ожидает ваша система (3.6 в Ubuntu 18.04), она не будет работать.Причина , почему это не работает так, при использовании
update-alternatives
,/usr/bin/python3
указывает/etc/alternatives/python3
, и кажется , что это не совсем то же самое, что/usr/bin/python3
пункт/usr/bin/python3.6
.Вот почему решение этой проблемы часто состоит в том, чтобы перестать управлять версиями Python3
update-alternatives
и/usr/bin/python3
указать правильную версию Python3, которую ожидает ваша система.источник
/usr/bin/python
не существует в чистой установке 18.04, но он существует, если вы делаете обновление вместо чистой установки или устанавливаетеpython
пакет, и в этом случае это должен быть Python 2.7, а не 3.6. Смотри PEP 394 .update-alternatives
. Это связано с тем, что ОС зависит от установленной версии.