web-dev-qa-db-fra.com

Comment changer python version par défaut de 2.7 à 3.7 sur RHEL 7

Comment changer python version par défaut de 2.7 à 3.7 sur RHEL 7.

Installé python sur la machine virtuelle RHEL7 en suivant ceci https://tecadmin.net/install-python-3-7-on-centos/

Lorsque je vérifie la version python, il affiche toujours l'ancienne version.

5
itgeek

Comme d'autres l'ont dit plus haut dans les commentaires, RHEL 7 et ses dérivés dépendent de Python 2 à un niveau très profond. Vous ne pouvez tout simplement pas remplacer en toute sécurité Python 2 avec 3.

Même si ce n'était pas le cas, votre question est basée sur une prémisse incorrecte, étant que remplacer Python 2 par Python 3 est une bonne idée dans le premier Vous devez toujours appeler Python 3 as python3, car cela vous isole de ce problème. Les scripts qui supposent Python 2 l'appellera comme python dans lignes Shebang et ainsi, donc il n'y a en fait pas de conflit entre les deux si votre binaire Python sont construits correctement.

Ce "si" peut vous mordre: certains emballeurs ont créé Python 3 paquets avec un /usr/bin/python ou similaire, ce qui crée un conflit. Ces packages ignorent les conseils standard, qui permettent d'installer les deux en parallèle.

Quant à obtenir réellement un Python 3 pour RHEL 7, c'est bien couvert dans une autre réponse sur Stack Overflow .

6
Warren Young

Sur RHEL7 avec l'installation officielle standard (en utilisant le référentiel SCL), le passage en environnement python3 pour le shell actuel se fait via la commande "scl enable" (note: dans mon cas, j'ai python 3.6):

scl enable rh-python36 "/bin/bash"

J'ai compris que si vous voulez configurer un utilisateur pour que son environnement soit configuré en dur pour Python3, faites-le (remarque: remplacez "[some_user]" par le nom d'utilisateur de cet utilisateur):

user=[some_user]; userhome=$(eval echo ~$user); echo ". /opt/rh/rh-python36/enable" >> ${userhome}/.bashrc

.bashrc est chargé à la fois pour les shells de connexion et non-logins, ce qui devrait donc être le cas pour les deux, les scripts exécutés à partir de la ligne de commande ainsi que les scripts exécutés par certains travaux cron, etc. le système par défaut comme emplacements principaux, c'est aussi simple que cela.

1
cepal67

Je recommanderais la solution alternatives

Mes commandes seraient bien.

#!/bin/bash

alternatives --list | grep -i python
alternatives --install /usr/bin/python python /usr/bin/python2.7 1
alternatives --install /usr/bin/python python /usr/bin/python3.6 2
alternatives --install /usr/bin/python python /usr/local/bin/python3.7 3
alternatives --config python
0
Raj Chinna