Changer la version par défaut de Python3 dans Ubuntu

73

J'utilise Ubuntu 16.04 LTS. J'ai python3installé. Il y a deux versions installées, python 3.4.3et python 3.6. Chaque fois que j'utilise une python3commande, cela prend python 3.4.3par défaut. Je veux utiliser python 3.6avec python3.

python3 --version montre version 3.4.3

Je suis en train d'installer ansiblequi prend en charge version > 3.5. Donc, chaque fois que je tape ansible dans le terminal, il génère une erreur en raison depython 3.4

codeclue
la source
Quelle est la commande utilisée pour exécuter Python 3.6?
La commande est la suivante: - python3.6
codeclue
3
Qu'est-ce que tu sudo update-alternatives --config python3dis?
Mikael Kjær
1
update-alternatives: erreur: pas d'alternatives pour python3
codeclue
Voir mon commentaire dans la réponse ci-dessous sur la façon d'utiliser ansible avec une version spécifique de python3. Vous pouvez également envisager de supprimer Python 3.4.
Mikael Kjær

Réponses:

99

Du commentaire:

sudo update-alternatives --config python

Va vous montrer une erreur:

update-alternatives: error: no alternatives for python3 

Vous devez mettre à jour votre update-alternatives, vous pourrez alors définir votre version python par défaut.

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

Puis lancez:

sudo update-alternatives --config python

Définissez python3.6 par défaut.

Ou utilisez la commande suivante pour définir python3.6 par défaut:

sudo update-alternatives  --set python /usr/bin/python3.6
GAD3R
la source
1
Cette réponse va probablement casser apt. Après avoir sélectionné une version différente de Python, essayez de lancer sudo apt update. Si cela vous donne une erreur comme ModuleNotFoundError: No module named 'apt_pkg'vous voulez aller /usr/lib/python3/dist-packageset créer le lien symbolique: ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so.
Giacomo Alzetta
Cela me donne une erreur: $ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for pythonDes suggestions?
Slava Fomin II
1
@ GAD3R Merci. J'ai réussi à créer manuellement un lien symbolique pour pointer vers Python 3.6. De plus, je n'ai pas installé 3.7.
Slava Fomin II
Faire python3remarquer à python3.8avec cette méthode a cassé gnome-terminalpour moi.
Boris
10

Vous pouvez y parvenir en appliquant ci-dessous des étapes simples -

  1. Vérifiez la version de python sur le terminal - python --version
  2. Obtenir les privilèges de l'utilisateur root. Sur le type de terminal -sudo su
  3. Notez le mot de passe de l'utilisateur root
  4. Exécutez cette commande pour passer à python 3.6 -
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. Vérifier la version de python - python --version
  6. Terminé.
Vineet Jain
la source
1
Fonctionne, est simple à lire et n’utilise pas d’alias. +1
Carlos Pinzón
Fonctionne bien sur Ubuntu 18.04. si simple que d'autres solutions. merci beaucoup
Mohammad Heydari
7

L'utilisation de ces commandes peut vous aider à:

  1. vérifiez la version de python: ls /usr/bin/python*
  2. alias: alias python='/usr/bin/pythonxx'
  3. vous reconnecter: . ~/.bashrc
  4. vérifiez à nouveau la version de python: python --version
Triton
la source
merci mais après le redémarrage de l'ordinateur, le python principal serait toujours l'ex-python 2.7
Mohammad Heydari
7

Créez un lien symbolique pour / usr / bin / python3. Dans mon LinuxMint:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2
Nabi Sheyhov
la source
3

Une réponse simple consisterait à ajouter un alias pour python3.6.

Ajoutez simplement cette ligne dans le fichier ~ / .bashrc:, alias python3="python3.6"puis fermez votre terminal et ouvrez-en un nouveau. Maintenant, lorsque vous tapez, python3 xxxil est traduit en python3.6 xxx.

Cette solution résout votre problème sans avoir à modifier trop votre système.

MODIFIER :

Comme Mikael Kjær l'a souligné, il s'agit d'une mauvaise configuration de ansible avec votre système.

Comme vu ici:

Définissez l' ansible_python_interpreteroption de configuration sur / usr / bin / python3. L'option de configuration ansible_python_interpreter est généralement définie par hôte en tant que variable d'inventaire associée à un hôte ou à un groupe d'hôtes:

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

Comme on le voit ici à propos du fichier de configuration:

Des modifications peuvent être apportées et utilisées dans un fichier de configuration qui sera traité dans l'ordre suivant:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

la source
En fait, j'installe ansible, qui ne supporte que> python 3.5
codeclue
1
Vous pouvez configurer la ansible_python_interpretervariable pour utiliser votre python3.6. docs.ansible.com/ansible/latest/python_3_support.html
Mikael Kjær
@ MikaelKjær Je viens d'ajouter votre commentaire à ma réponse
2

si vous avez plusieurs versions de python dans votre système. Il vous suffit de mettre à jour le lien symbolique de python à l'intérieur/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

Dans l'exemple ci-dessus, si vous voyez le résultat, python --versionvous obtiendrez python2.7

Maintenant, mettez à jour le lien symbolique python en utilisant la commande ci-dessous.

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8
IRSHAD
la source
0

update-alternatives consiste à changer les liens symboliques du système en liens symboliques définis par l'utilisateur / définis par l'administrateur. Si vous avez plusieurs versions de python3 installées sur votre système et souhaitez contrôler la version de python3 à appeler lorsque python3 est appelé. Faire ce qui suit

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

Exécutez la commande ci-dessous si vous souhaitez modifier la priorité à l'avenir.

update-alternatives --config python3

Explication:-

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

Vous pouvez continuer à changer name_of_config en python4, mais vous devez ensuite appeler update-alternatives --config avec python4 pour reconfigurer.

En utilisant cette approche, vous pouvez contrôler séparément la version du système et la version de python3.

spirituel
la source
0

la première vérification faites-vous dossier python3.6

ls /usr/bin/python3.6

si vous avez un dossier comme python3.6 bon aller

puis update-alternatives

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

met à jour maintenant la nouvelle configuration pour python3

sudo update-alternatives --config python3

vérifier la version de python

python3 --version

mmblack
la source
0

Vous pouvez modifier le lien symbolique par l' ln -sf python3.6 python3intérieur /usr/bin. Avec cela quand vous appelez python3il s'exécuterapython3.6

SPAWN35
la source