web-dev-qa-db-fra.com

Deux versions de python sur linux. comment faire 2.7 par défaut

J'ai deux versions de python sur ma linuxbox:

$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct  8 2013, 15:53:09) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more 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 faire pour que 2.7 soit la version par défaut alors quand je tape python, cela me met dans 2.7?

110
Anthony

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

Votre distribution a installé un système Python standard dans /usr/bin et peut avoir des scripts dépendant de sa présence et sélectionnés par #! /usr/bin/env python. Vous pouvez généralement vous échapper à l'exécution de scripts Python 2.6 dans la version 2.7, mais voulez-vous prendre le risque?

En plus de cela, singer avec /usr/bin peut compromettre 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 que Python. (En fait, il est plus courant d’avoir /usr/local/bin devant /usr/bin, et c’est peut-être ce que vous voulez réellement, mais si vous l’inverse, il y a probablement de bonnes raisons pour cela.)

Mais vous n'avez pas besoin de changer votre Python par défaut pour que le système s'exécute en 2.7 lorsque vous tapez python.


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

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

Tapez cela à l'invite, ou mettez-le dans votre ~/.bashrc si vous voulez que le changement soit persistant, et maintenant, quand vous tapez python, il exécute votre 2.7 choisi, script avec /usr/bin/env python il exécute la norme 2.6.


Sinon, vous pouvez simplement créer un environnement virtuel à partir de votre version 2.7 (ou séparer des modèles pour différents projets) et effectuer votre travail dans le système.

161
abarnert

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

Cela se fait généralement dans le fichier rc de votre shell, par exemple. pour bash, vous mettriez ceci dans .bashrc:

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

Cela fera que votre shell recherchera d'abord une python dans /usr/local/bin, avant de passer à celle dans /usr/bin.

(Bien entendu, cela signifie que vous devez également que /usr/local/bin/python pointe sur python2.7 - si ce n’est pas déjà le cas, vous devrez le faire en lien symbolique.)

17
Amber

Entrez la commande

which python

//output:
/usr/bin/python

cd /usr/bin
ls -l

Ici vous pouvez voir quelque chose comme ça

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

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

Alors, supprimez le python du lien logiciel

Sudo rm -r python

puis réessayez la commande ci-dessus

ls -l

vous pouvez voir que le softlink est supprimé

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

Créez ensuite un nouveau lien symbolique pour python3.6

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

Puis essayez la commande python dans le terminal

//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux

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

1
Sreenath

Tous les systèmes d’exploitation sont livrés avec une version par défaut de Python qui réside dans/usr/bin. Tous les scripts fournis avec le système d’exploitation (par exemple, yum) désignent cette version de python résidant dans /usr/bin. Lorsque vous souhaitez installer une nouvelle version de python, vous ne souhaitez pas interrompre les scripts existants qui pourraient ne pas fonctionner nouvelle version de python. 

Pour ce faire, vous devez installer le python en tant que version alternative.

e.g.
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 faisant cela, les scripts existants tels que yum fonctionnent toujours avec /usr/bin/python.et votre version python par défaut serait celle installée dans /usr/local/bin.i.e. lorsque vous tapez python, vous obtenez 2.7.3

Cela arrive parce que. La variable $ PATH a/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 ne prend toujours pas effet comme version par défaut de Python, vous devrez le faire. 

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

Vérifiez la version actuelle de python par:

$ python --version

puis vérifiez que python est un lien symbolique vers quel fichier.

  $ ll /usr/bin/python

Sortie Ex:

 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*

Sortie Ex:

/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 voulez changer la version actuelle de python en fichier d'édition de version 3.6 ~/.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 du pip:

$ pip3 -V

Sortie Ex:

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