133 votes

Deux versions de python sur Linux. comment faire de la version 2.7 la par défaut

J'ai deux versions de Python sur mon linuxbox :

$ python
Python 2.6.6 (r266:84292, 10 Juil 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] sur linux2
Tapez "help", "copyright", "credits" or "license" pour plus d'information.
>>> 

$ /usr/local/bin/python2.7
Python 2.7.3 (par défaut, 8 Oct 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] sur linux2
Tapez "help", "copyright", "credits" or "license" pour plus d'information.
>>> 

$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python

Comment puis-je faire en sorte que la version 2.7 soit la version par défaut afin que lorsque je tape python, cela me mette en 2.7 ?

181voto

abarnert Points 94246

Vous ne voulez probablement pas réellement changer votre Python par défaut.

Votre distribution a installé un Python système standard dans /usr/bin, et peut avoir des scripts qui dépendent de sa présence, et qui sont sélectionnés par #! /usr/bin/env python. Vous pouvez en général exécuter des scripts en Python 2.6 en 2.7, mais voulez-vous prendre ce risque?

En plus de cela, manipuler /usr/bin peut perturber la capacité de votre gestionnaire de paquets à gérer les paquets. Et changer l'ordre des répertoires dans votre PATH affectera beaucoup d'autres choses en dehors de Python. (En fait, il est plus courant d'avoir /usr/local/bin en premier de /usr/bin, et c'est peut-être ce que vous voulez réellement, mais s'il est à l'envers, il y a probablement une bonne raison à cela.)

Mais vous n'avez pas besoin de changer votre Python par défaut pour exécuter la version 2.7 quand vous tapez python.


Tout d'abord, vous pouvez configurer un alias de shell:

alias python=/usr/local/bin/python2.7

Tapez cela dans un terminal, ou mettez-le dans votre ~/.bashrc si vous voulez que le changement soit persistant, et maintenant quand vous tapez python, il exécute votre version choisie en 2.7, mais quand un programme sur votre système tente d'exécuter un script avec /usr/bin/env python, il exécute la version standard en 2.6.


Alternativement, créez simplement un environnement virtuel avec votre 2.7 (ou des venvs séparés pour différents projets), et travaillez à l'intérieur du venv.

21voto

Amber Points 159296

Ajoutez /usr/local/bin à votre variable d'environnement PATH, plus tôt dans la liste que /usr/bin.

Généralement, cela se fait dans le fichier de configuration de votre shell, par exemple pour bash, vous mettrez ceci dans .bashrc:

export PATH="/usr/local/bin:$PATH"

Cela permettra à votre shell de d'abord chercher un python dans /usr/local/bin, avant de passer à celui dans /usr/bin.

(Bien sûr, cela signifie que vous devez également avoir /usr/local/bin/python pointant vers python2.7 - si ce n'est pas déjà le cas, vous devrez créer un lien symbolique.)

8voto

Sreenath Points 91

Entrez la commande

which python

//sortie:
/usr/bin/python

cd /usr/bin
ls -l

Ici vous pouvez voir quelque chose comme ceci

lrwxrwxrwx 1 root   root            9 Mar  7 17:04  python -> python2.7

votre python2.7 par défaut est lié en douceur au texte 'python'

Alors supprimez le lien symbolique python

sudo rm -r python

puis réessayez la commande ci-dessus

ls -l

vous pouvez voir que le lien symbolique est supprimé

-rwxr-xr-x 1 root   root      3670448 Nov 12 20:01  python2.7

Ensuite, créez un nouveau lien symbolique pour python3.6

ln -s /usr/bin/python3.6 python

Ensuite, essayez la commande python dans le terminal

//sortie:
Python 3.6.7 (par défaut, le 22 octobre 2018, 11:32:17) 
[GCC 8.2.0] sur linux

Tapez help, copyright, credits ou license pour plus d'informations.

4voto

ShivBuyya Points 850

Vérifiez la version actuelle de Python en :

$ python --version

puis vérifiez vers quel fichier pointe le lien symbolique de Python.

$ ll /usr/bin/python

Exemple de sortie :

 lrwxrwxrwx 1 root root 9 Jun 16  2014 /usr/bin/python -> python2.7*

Vérifiez les autres versions disponibles de Python :

$ ls /usr/bin/python*

Exemple de sortie :

/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.4         /usr/bin/python3.4m-config  /usr/bin/python3.6m         /usr/bin/python3m
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.4-config  /usr/bin/python3.6          /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.4m        /usr/bin/python3.6-config   /usr/bin/python3-config     /usr/bin/python-config

Si vous souhaitez changer la version actuelle de Python pour la version 3.6, modifiez le fichier ~/.bashrc :

vim ~/.bashrc

Ajoutez la ligne ci-dessous à la fin du fichier et enregistrez :

alias python=/usr/local/bin/python3.6

Pour installer pip pour Python 3.6

$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip

En cas de succès, vérifiez la version actuelle de pip :

$ pip3 -V

Exemple de sortie :

pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)

2voto

Prakash Kamath Points 21

Tous les systèmes d'exploitation sont livrés avec une version par défaut de python qui se trouve dans /usr/bin. Tous les scripts livrés avec le système d'exploitation (par ex. yum) pointent vers cette version de python résidant dans /usr/bin. Lorsque vous souhaitez installer une nouvelle version de python, vous ne voulez pas casser les scripts existants qui pourraient ne pas fonctionner avec la nouvelle version de python.

La bonne manière de procéder est d'installer python en tant que version alternative.

par exemple
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall

En effectuant cette opération, les scripts existants comme yum continueront de fonctionner avec /usr/bin/python. Et votre version par défaut de python sera celle installée dans /usr/local/bin. Autrement dit, lorsque vous saisissez python, vous obtenez la version 2.7.3

Cela se produit car la variable $PATH contient /usr/local/bin avant usr/bin.

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

Si python2.7 n'est toujours pas pris en compte comme la version de python par défaut, vous devrez faire

export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X