Trois étapes en utilisant Python 3.5 par Software Collections :
sudo yum install centos-release-scl
sudo yum install rh-python35
scl enable rh-python35 bash
Notez que sudo n'est pas nécessaire pour la dernière commande. Nous pouvons maintenant voir que python 3 est la valeur par défaut du shell actuel:
python --version
Python 3.5.1
Ignorez simplement la dernière commande si vous préférez avoir Python 2 par défaut pour le shell actuel.
Maintenant, disons que vos scripts Python 3 vous donnent une erreur comme /usr/bin/env: python3: No such file or directory
. C'est parce que l'installation se fait généralement sur un chemin inhabituel:
/opt/rh/rh-python35/root/bin/python3
Ce qui précède serait normalement un lien symbolique. Si vous souhaitez python3
être automatiquement ajouté au $PATH
pour tous les utilisateurs au démarrage, une façon de le faire consiste à ajouter un fichier comme:
sudo vim /etc/profile.d/rh-python35.sh
Ce qui aurait quelque chose comme:
#!/bin/bash
PATH=$PATH:/opt/rh/rh-python35/root/bin/
Et maintenant après un redémarrage, si nous le faisons
python3 --version
Cela devrait juste fonctionner. Une exception serait un utilisateur généré automatiquement comme "jenkins" dans un serveur Jenkins qui n'a pas de shell. Dans ce cas, ajouter manuellement le chemin d'accès $PATH
dans les scripts serait une solution.
Enfin, si vous utilisez sudo pip3
pour installer des packages, mais que cela vous indique que pip3 est introuvable, il se peut que vous ayez un secure_path dans / etc / sudoers . Vérifier avec sudo visudo
devrait le confirmer. Pour utiliser temporairement le PATH standard lors de l'exécution de commandes, vous pouvez faire, par exemple:
sudo env "PATH=$PATH" pip3 --version
Voir cette question pour plus de détails.
REMARQUE : Il existe un Python 3.6 plus récent de Software Collections, mais je ne le recommanderais pas pour le moment, car j'avais de gros maux de tête en essayant d'installer Pycurl. Pour Python 3.5, ce n'est pas un problème car je viens de faire sudo yum install sclo-python35-python-pycurl
ce qui a fonctionné immédiatement.