come cambiare la versione predefinita di Python?


106

Ho installato python 3.2 nel mio mac. Dopo aver eseguito / Applications / Python 3.2 / Update Shell Profile.command , è fonte di confusione che quando digito python -V nel terminale dica che Python 2.6.1 , come posso cambiare la versione di python predefinita?



Vedi opensource.com/article/19/5/python-3-default-mac per una buona soluzione usando pyenv.
Thomas Ahle

Risposte:


115

Questo è probabilmente desiderabile per la compatibilità con le versioni precedenti.

Python3 rompe la compatibilità con le versioni precedenti e i programmi che invocano "python" probabilmente si aspettano python2. Probabilmente hai molti programmi e script di cui non sei nemmeno a conoscenza e che si aspettano python = python2, e cambiarlo romperebbe quei programmi e script.

La risposta che probabilmente stai cercando è Non dovresti cambiarla .

Tuttavia, potresti creare un alias personalizzato nella tua shell. Il modo in cui lo fai dipende dalla shell, ma forse potresti farloalias py=python3

Se sei confuso su come avviare l'ultima versione di python, è almeno il caso su Linux che python3lascia la tua python2installazione intatta (a causa dei motivi di compatibilità di cui sopra) ; quindi puoi avviare python3 con il python3comando.


36
Questa è un'informazione utile, ma la domanda era "come posso cambiare la versione predefinita di Python". Possiamo aggiungere qualcosa per aiutare le persone che cercano di farlo?
dmeyerson

Su Mac, l'installazione di Python3 lascia intatto anche Python2. Ma mi sembra che ci sia un modo per cambiare l'impostazione predefinita che viene eseguita quando viene digitato solo "python". Una volta mi sono imbattuto nell'opzione. Ho scelto di lasciarlo così com'è dove "python --version" mostra 2.7.12 e "python3 --version" mostra 3.7.0. Sono d'accordo con dmeyerson sopra che la domanda è come cambiarlo. Il tuo consiglio è buono ma c'è un modo per cambiarlo se devi (o davvero, lo vuoi davvero).
Rich Sadowsky

3
> La risposta che probabilmente stai cercando è Non dovresti cambiarla. E qui ho pensato che fosse "come faccio a cambiare questo"!
duane

2
Questa risposta è corretta. Non modificare ciò che pythonpunta a livello di sistema poiché se lo fai potresti rompere componenti importanti del tuo sistema operativo . Invece, usa un'installazione separata di Python 3 e virtualen per darti un Python predefinito "locale".
Martijn Pieters

50

Controlla la posizione di python 3

$ which python3
/usr/local/bin/python3

Scrivi l'alias in bash_profile

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

Ricarica bash_profile

source ~/.bash_profile

Conferma il comando python

$ python --version
Python 3.6.5

2
questa è una cattiva soluzione. Come menzionato nella risposta accettata, $ pythonè riservato a python 2. Qualsiasi programma eseguito sul computer che si aspetta python 2 riceverebbe quindi python 3 a causa dell'alias, che potrebbe avere conseguenze negative impreviste.
Shonin

Le intenzioni di Apple sono irrilevanti per la domanda.
duane

45

Su Mac OS X usando il programma di installazione python.org come apparentemente hai, devi invocare Python 3 con python3, not python. Questo è attualmente riservato per le versioni di Python 2. Puoi anche usare python3.2per invocare specificamente quella versione.

$ 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*

Se hai installato anche un Python 2 da python.org, avrebbe una directory bin del framework simile senza nomi di file sovrapposti (ad eccezione di 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*

Per quanto riguarda "attualmente riservato alle versioni di Python 2", hai un link per quello?
Wildcard

Se ho python 3.4 e python 3.7, quando digito python3 dal terminale, esegue python 3.4 non 3.7, come risolvere questo problema?
Ysh


19

Fai la cosa giusta, fai la cosa giusta!

---> Zero Apri il tuo terminale,

- Primo input python -V, probabilmente mostra:

Python 2.7.10

-In secondo luogo python3 -V, probabilmente mostra:

Python 3.7.2

- Terzo input where pythono which python, probabilmente mostra:

/usr/bin/python

--- Quarto input where python3o which python3, probabilmente mostra:

/usr/local/bin/python3

- In quinto luogo aggiungi la seguente riga nella parte inferiore del tuo file della variabile d'ambiente PATH in ~/.profile file or ~/.bash_profileBash o ~/.zshrcin zsh.

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

O

alias python=python3

-Sesto input source ~/.bash_profilesotto Bash o source ~/.zshrcsotto zsh.

Settimo Esci dal terminale.

--- Ottavo Apri il tuo terminale e inserisci python -V, probabilmente mostra:

Python 3.7.2

Avevo fatto con successo provarlo.

Altri, il ~/.bash_profilesotto zsh non è quello ~/.bash_profile.

La variabile d'ambiente PATH sotto zsh invece ~/.profile(o ~/.bash_file) tramite ~/.zshrc.

Aiutatevi ragazzi!


16

Cambia il Python "predefinito" mettendolo davanti al Python di sistema sul tuo percorso, ad esempio:

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

La mia ipotesi è che in questo modo potresti rompere qualcosa su Mac. Poiché ci sono molti programmi e script che usano l'alias "python". Se improvvisamente, a causa del cambiamento di priorità in PATH, iniziano a puntare verso Python3 e non Python2, ciò potrebbe rompere qualcosa. Potenzialmente l'intero sistema operativo ... questa è la mia ipotesi e non è stata testata.
Aivoric

3
Qualsiasi software di sistema utilizzerebbe il percorso completo del sistema fornito da Python.
Adam Vandenberg

2

Secondo una rapida ricerca su Google, questo aggiornamento si applica solo alla shell corrente che hai aperto. Probabilmente può essere risolto digitando python3, poiché mac e linux sono abbastanza simili da far coincidere cose come questa. Link al risultato della ricerca su Google.

Inoltre, come affermato da ninjagecko, la maggior parte dei programmi non è stata ancora aggiornata a 3.x, quindi avere il python predefinito come 3.x potrebbe rompere molti script python usati nelle applicazioni.


2

Sto usando OS X 10.7.5 e Python 3.4.2. Se digiti python3e cosa vuoi eseguire, lo eseguirà usando python 3. Ad esempio pyhton3 test001.py. Questo ha eseguito un programma di test che ho creato chiamato test001. Spero che aiuti.


5
Benvenuto in Stack Overflow! Sembra che la tua risposta non sia una risposta reale alla domanda posta. Fare riferimento a stackoverflow.com/help/how-to-answer per aiuto se si desidera risolverlo.
Altri

Ho passato ORE cercando di far funzionare python3 sul mio Mac - ho scoperto che digitare "python3" invece del vecchio "python" ha funzionato.
YCode

1

Navigare verso:

Risorse del computer -> Proprietà -> Avanzate -> Variabili d'ambiente -> Variabili di sistema

Supponiamo di aver già aggiunto python 2.7 nella variabile di percorso e di voler cambiare il percorso predefinito in python 3.x

quindi aggiungi il percorso della cartella python3.5.x prima del percorso python2.7.

apri cmd: digita "python --version"

la versione di python verrà modificata in python 3.5.x


3
Questo è Windows.
charles ross

Alcuni IDE includono terminali / cmds / console, propaga le variabili d'ambiente. Riavvia l'IDE per ottenere le modifiche all'interno del terminale embedd.
InutiliCat

0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Questo interromperà gli script, ma è esattamente il modo per cambiare python. Dovresti anche riscrivere gli script per non dare per scontato che pythonsia 2.x. Funzionerà indipendentemente dal luogo in cui chiami systemo exec.


0

In breve: cambia il percorso in Variabili d'ambiente!

Per Windows:

  • Advanced System Settings > Advance (tab). In fondo troverai'Environment Variables'

  • Fare doppio clic sul file Path. Vedrai il percorso di una delle installazioni di python, modificalo nel percorso della versione desiderata.


0

Controlla il percorso di esecuzione di python3 dove ha le librerie

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

apri il file bash_profile e aggiungi un alias

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

Ricarica bash_profile per rendere effettive le modifiche

source ~/.bash_profile

Esegui il comando python e controlla se si sta caricando con python3

$ python --version
Python 3.6.5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.