comment changer la version par défaut de python?

106

J'ai installé python 3.2 sur mon mac. Après avoir exécuté / Applications / Python 3.2 / Update Shell Profile.command , il est déroutant que lorsque je tape python -V dans Terminal, il indique que Python 2.6.1 , comment puis-je changer la version par défaut de python?

Zhu Shengqi
la source
En relation: stackoverflow.com/a/18425592/939986
Santosh Kumar
Voir opensource.com/article/19/5/python-3-default-mac pour une solution intéressante en utilisant pyenv.
Thomas Ahle

Réponses:

115

Ceci est probablement souhaitable pour la compatibilité ascendante.

Python3 rompt la rétrocompatibilité, et les programmes appelant «python» s'attendent probablement à python2. Vous avez probablement de nombreux programmes et scripts dont vous n'êtes même pas au courant et qui attendent python = python2, et changer cela casserait ces programmes et scripts.

La réponse que vous recherchez probablement est que vous ne devriez pas changer cela .

Vous pouvez cependant créer un alias personnalisé dans votre shell. La façon dont vous le faites dépend du shell, mais vous pourriez peut-être le fairealias py=python3

Si vous ne savez pas comment démarrer la dernière version de python, c'est au moins le cas sous Linux qui python3laisse votre python2installation intacte (pour les raisons de compatibilité ci-dessus) ; ainsi vous pouvez démarrer python3 avec la python3commande.

ninjagecko
la source
36
Ce sont des informations utiles, mais la question était "comment puis-je changer la version par défaut de Python." Pouvons-nous ajouter quelque chose pour aider les gens qui essaient de faire cela?
dmeyerson le
Sur Mac, l'installation de Python3 laisse également Python2 intact. Mais il me semble qu'il existe un moyen de changer la valeur par défaut qui est exécutée lorsque seul "python" est tapé. Je suis tombé sur l'option une fois. J'ai choisi de le laisser tel quel où "python --version" affiche 2.7.12 et "python3 --version" affiche 3.7.0. Je suis d'accord avec dmeyerson ci-dessus que la question est de savoir comment le changer. Votre conseil est bon, mais il existe un moyen de le changer si vous le devez (ou le souhaitez vraiment, vraiment).
Rich Sadowsky
3
> La réponse que vous recherchez probablement est que vous ne devriez pas changer cela. Et là, je pensais que c'était "comment changer cela"!
duane
2
Cette réponse est correcte. Ne changez pas les pythonpoints au niveau du système car vous pouvez casser des composants importants de votre système d'exploitation si vous le faites . À la place, utilisez une installation Python 3 distincte et virtualen pour vous donner un Python par défaut «local».
Martijn Pieters
51

Vérifiez l'emplacement de python 3

$ which python3
/usr/local/bin/python3

Ecrire l'alias dans bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Recharger bash_profile

source ~/.bash_profile

Confirmer la commande python

$ python --version
Python 3.6.5
Ryosuke Hujisawa
la source
2
c'est une mauvaise solution. Comme mentionné dans la réponse acceptée, $ pythonest réservé à python 2. Tout programme que vous exécutez sur votre ordinateur et qui attend python 2 recevrait alors python 3 en raison de l'alias, ce qui pourrait avoir des conséquences négatives imprévues.
Shonin
Les intentions d'Apple ne sont pas pertinentes pour la question.
duane
45

Sur Mac OS X en utilisant le programme d'installation python.org comme vous l'avez apparemment, vous devez appeler Python 3 avec python3, pas python. Ceci est actuellement réservé aux versions de Python 2. Vous pouvez également utiliser python3.2pour invoquer spécifiquement cette version.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Si vous avez également installé un Python 2 à partir de python.org, il aurait un répertoire bin de framework similaire sans noms de fichiers qui se chevauchent (sauf pour 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Ned Deily
la source
Concernant "actuellement réservé aux versions Python 2", avez-vous un lien pour cela?
Wildcard
Si j'ai python 3.4 et python 3.7, lorsque je tape python3 à partir du terminal, il exécute python 3.4 et non 3.7, comment résoudre ce problème?
Ysh
31

Ancienne question, mais alternativement:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
la source
bien sûr, mais si vous n'avez pas l'exécutable (par exemple python3.5), cette solution ne fonctionne pas.
Afshin Mehrabani
Je pense que cela couvre que stackoverflow.com/questions/5506110/…
FreshPow
19

Faites la bonne chose, faites la bonne chose!

---> Zéro Ouvrez votre terminal,

- Premièrement python -V, cela montre probablement:

Python 2.7.10

-Deuxièmement python3 -V, cela montre probablement:

Python 3.7.2

- Troisièmement entrée where pythonou which python, cela montre probablement:

/usr/bin/python

--- Quatrièmement, entrez where python3ou which python3, cela montre probablement:

/usr/local/bin/python3

--Cinquièmement, ajoutez la ligne suivante en bas de votre fichier de variable d'environnement PATH ~/.profile file or ~/.bash_profilesous Bash ou ~/.zshrcsous zsh.

alias python='/usr/local/bin/python3'

OU

alias python=python3

-Sixième entrée source ~/.bash_profilesous Bash ou source ~/.zshrcsous zsh.

- Septièmement, quittez le terminal.

--- Huitièmement, ouvrez votre terminal et entrez python -V, cela montre probablement:

Python 3.7.2

J'avais réussi à l'essayer.

D'autres, le ~/.bash_profilesous zsh n'est pas ça ~/.bash_profile.

La variable d'environnement PATH sous zsh à la place ~/.profile(ou ~/.bash_file) via ~/.zshrc.

Aidez-vous les gars!

McAllister Bowman
la source
16

Changez le Python "par défaut" en le plaçant avant le système Python sur votre chemin, par exemple:

export PATH=/usr/local/bin:$PATH
Adam Vandenberg
la source
Mon hypothèse est qu'en faisant cela, vous pourriez casser quelque chose sur Mac. Puisqu'il existe de nombreux programmes et scripts qui utilisent l'alias "python". Si soudainement, en raison du changement de priorité dans PATH, ils commencent à pointer vers Python3 et non vers Python2 - cela pourrait casser quelque chose. Potentiellement l'ensemble du système d'exploitation ... c'est mon hypothèse et non testé.
Aivoric
3
Tout logiciel système utiliserait le chemin complet du système Python fourni.
Adam Vandenberg
2

Selon une recherche rapide sur Google, cette mise à jour ne s'applique qu'au shell actuel que vous avez ouvert. Cela peut probablement être corrigé en tapant python3, car mac et linux sont assez similaires pour que des choses comme celle-ci coïncident. Lien vers le résultat de la recherche Google.

De plus, comme ninjagecko l'a déclaré, la plupart des programmes n'ont pas encore été mis à jour vers 3.x, donc avoir le python par défaut comme 3.x briserait de nombreux scripts python utilisés dans les applications.

Matt Habel
la source
2

J'utilise OS X 10.7.5 et Python 3.4.2. Si vous tapez python3et ce que vous voulez exécuter, il l'exécutera en utilisant python 3. Par exemple pyhton3 test001.py. Cela a exécuté un programme de test que j'ai créé appelé test001. J'espère que ça aide.

ITGM
la source
5
Bienvenue dans Stack Overflow! Il semble que votre réponse ne soit pas une vraie réponse à la question posée. Prière de se référer à stackoverflow.com/help/how-to-answer pour obtenir de l'aide si vous souhaitez résoudre ce problème.
Autres
J'ai passé des HEURES à essayer de faire fonctionner python3 sur mon Mac - il s'est avéré que taper «python3» au lieu de l'ancien «python» a fait l'affaire.
YCode
1

Aller vers:

Poste de travail -> Propriétés -> Avancé -> Variables d'environnement -> Variables système

Supposons que vous ayez déjà ajouté python 2.7 dans la variable de chemin et que vous souhaitiez changer le chemin par défaut en python 3.x

puis ajoutez le chemin du dossier python3.5.x avant le chemin python2.7.

cmd ouvert: tapez "python --version"

la version de python sera changée en python 3.5.x

Ankit Agrawal
la source
3
C'est Windows.
charles ross
Certains IDE qui incluent des terminaux / cmds / consoles, propagent les variables d'environnement. Redémarrez l'EDI pour obtenir les modifications dans le terminal incorporé.
UselesssCat
0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Cela cassera les scripts, mais c'est exactement le moyen de changer python. Vous devez également réécrire les scripts pour ne pas supposer que pythonc'est 2.x. Cela fonctionnera quel que soit l'endroit où vous appelez systemou exec.

duane
la source
0

En bref: changez le chemin dans les variables d'environnement!

Pour les fenêtres:

  • Avancé System Settings > Advance (tab). En bas, vous trouverez'Environment Variables'

  • Double-cliquez sur le fichier Path. Vous verrez le chemin vers l'une des installations python, remplacez-le par le chemin de la version souhaitée.

amalik2205
la source
0

Vérifiez le chemin d'exécution de python3 où il a des bibliothèques

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

ouvrez le fichier bash_profile et ajoutez un alias

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Recharger bash_profile pour prendre effet des modifications

source ~/.bash_profile

Exécutez la commande python et vérifiez s'il se charge avec python3

$ python --version
Python 3.6.5
Javeed Shakeel
la source