Je veux passer d'Ubuntu 16.04.5 LTS à 18.04, donc j'ai couru sudo do-release-upgrade
. Après avoir téléchargé et extrait, bionic.tar.gz
j'obtiens:
Can not upgrade
Your python3 install is corrupted. Please fix the '/usr/bin/python3'
symlink.
J'ai vu Comment réparer "l'installation de python est corrompue"? et donc je sudo ln -sf /usr/bin/python3.6 /usr/bin/python3
pensais que ce serait un problème similaire. Mais cela n'a pas fonctionné (toujours le même message d'erreur).
J'ai quelques versions de 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
Comment puis-je réparer python3
?
upgrade
python3
do-release-upgrade
mRcSchwering
la source
la source
Réponses:
Vous devez utiliser la version Python 3 par défaut pour 16.04. C'est 3,5 , pas 3,6. Alors lancez:
Si cela ne fonctionne pas, essayez de réinstaller le
python3
package.Par ailleurs,
update-alternatives --display python3
devrait vous donnerupdate-alternatives: error: no alternatives for python3
. Différentes versions de Python ne sont pas des alternatives dans Ubuntu.la source
Je viens de rencontrer ce problème sur Pop! _OS 18.04, en essayant de passer à 18.10, et il s'avère que le problème résidait dans le lien symbolique pour
/usr/bin/python
et non pour/usr/bin/python3
. J'avais/usr/bin/python3.6
configuré comme alternative pourpython
(paspython3
), et quand j'ai changé cela, je pouvais alors courirdo-release-upgrade
comme prévu.Je souhaite que le message d'erreur soit signalé
python
et nonpython3
.Avant, avec le problème:
Je l'ai fixé de cette façon:
Voir également ce commentaire ci-dessous qui décrit une solution plus précise qui explique également mieux ce qui se passe et comment y remédier.
la source
update-alternatives --remove-all python
était définitivement une surpuissance inutile: tout ce que vous aviez à faire était d'utiliserupdate-alternatives --config python
pour avoir unpython
point sur la dernièrepython2.*
(par exemplepython2.7
), puis utiliserupdate-alternatives --config python3
pour avoir unpython3
point sur spécifiquementpython3.6
- qui est la version par défaut de Python 3 pour 18.04.gnome-terminal
,update-manager
, etc. plutôt utiliser des environnements virtuels (documentation ici et ici )J'ai observé ce message d'erreur sur Windows 10 1903 exécutant WSL Ubuntu lorsque je voulais passer de 16.04 LTS à 18.04 LTS .
Après
do-release-upgrade
avoir échoué, j'ai changé d'python
alternative à tous les choix proposés parupdate-alternatives --config python
et j'ai réexécuté la commande de mise à niveau. Cela n'a pas aidé.Ensuite, j'ai vérifié le fichier journal
/var/log/dist-upgrade/main.log
qui contenait les lignesAinsi, bien que le message d'erreur mentionne python3 , le problème concerne python2 .
Le script de mise à niveau vérifie la
/usr/bin/python
liaison avec/usr/bin/python2
, voir le code sourceDistUpgrade/DistUpgradeController.py
ici: ubuntu launchpadUne solution consiste donc à supprimer complètement python du système alternatif et à ajouter le lien manuellement, comme décrit dans la réponse la plus courante.
Si vous ne souhaitez pas supprimer python du système alternatif, modifiez simplement le lien uniquement pendant la durée du processus de mise à niveau:
Cela a fonctionné pour moi.
Pendant le processus de mise à niveau, le lien est automatiquement réparé. Ainsi, lorsque la mise à niveau est terminée, elle pointe vers l'entrée python dans le répertoire des alternatives:
Modifier: pour des informations approfondies, le problème peut également apparaître si vous passez de 18.04 LTS à 19.04 et la réponse s'applique également à cette situation.
la source
Fondamentalement, la solution à ce problème consiste à
/usr/bin/python
indiquer la bonne version de Python attendue par votre version d'Ubuntu (par exemple, en 16.04 était Python2.7 et en 18.04 était Python3.6).Si plusieurs versions de Python sont installées sur votre système, vous pouvez les utiliser
update-alternatives
pour les gérer. Peu importe votre alternative par défaut pour Python est la bonne version que votre système attend (3.6 dans Ubuntu 18.04), cela ne fonctionnera pas.La raison pour laquelle cela ne fonctionne pas est que, lors de l'utilisation
update-alternatives
,/usr/bin/python3
pointe vers/etc/alternatives/python3
, et il semble que ce ne soit pas exactement la même chose que de faire/usr/bin/python3
remarquer/usr/bin/python3.6
.C'est pourquoi la solution à ce problème consiste souvent à cesser de gérer vos versions de Python3 avec
update-alternatives
et à/usr/bin/python3
indiquer la bonne version de Python3 attendue par votre système.la source
/usr/bin/python
n'existe pas sur une nouvelle installation de 18.04, mais c'est le cas si vous effectuez une mise à niveau au lieu d'une nouvelle installation ou installez lepython
package, auquel cas ce devrait être Python 2.7, et non 3.6. Voir PEP 394 .update-alternatives
. C'est parce que le système d'exploitation repose sur une certaine version en cours d'installation.