Recentemente ho aggiornato la mia installazione di Mac OS X 10.5 Leopard a 10.6 Snow Leopard, e con essa è arrivata una versione aggiornata di Python, 2.6.1 (invece se 2.5.1). Ora quando digito python
nel Terminale, ottengo ancora
Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04)
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Ho cercato in /usr/bin/
e ho scoperto che per ottenere Python 2.6 devo digitare python2.6
.
La domanda è: Come faccio a rendere il comando python
a Python 2.6?
È facile:
defaults write com.Apple.versioner.python Version 2.6
Vedi man python
per una spiegazione completa di Apple.
Inoltre, un trucco: assicurati di aver eseguito Python fornito con il tuo computer e non con un altro che hai installato. A tale scopo, digitare which python
al prompt dei comandi. Dovrebbe puntare a /usr/bin/python
. Lo dico solo perché il mio valore predefinito è 2.6 in Snow Leopard (era 2.5 quando stavo usando Leopard). Quindi il fatto che stai ottenendo 2,5 potrebbe indicare che c'è qualcos'altro nel tuo percorso.
Update
Per indirizzare i commenti qui sotto:
Questo non fa quello che le persone chiedono.
Lo fa per me, in OS X 10.8.2. Dopo aver eseguito defaults write com.Apple.versioner.python Version 2.6
, la versione predefinita di Python è effettivamente 2.6. (E allo stesso modo dopo il passaggio al 2.7).
Questo è vero sia che eseguo direttamente python
, sia che usi uno script eseguibile che inizia con #!/usr/bin/env python
- ottengo la versione prevista di Python.
Questo non risolve il collegamento simbolico in /System/Library/Frameworks/Python.framework/Versions dove Current punta a 2.7 che può causare problemi (perché è ancora in sys.path con 2.6!)
In effetti, non risolve quel collegamento simbolico.
Tuttavia, esegui uno script breve che print()
s il sys.path
e (almeno sulla mia impostazione relativamente predefinita) le directory della libreria 2.6 sono sul percorso e le 2.7 dirs sono non sul percorso. Né la directory symlink Current
sul percorso. Quindi non dovrebbe essere un problema per la maggior parte degli script.
Tuttavia, è possibile - non ha provato - che il link simbolico Current
sia utilizzato da easy_install
o pip
. Ciò causerebbe problemi. Di certo sembra un bug che il link simbolico non venga aggiornato quando aggiorni la versione di Python.
Suggerirei di usare le porte mac ...
C'è un pacchetto chiamato python_select che consente l'uso di pitoni in parallelo. Quindi prima installa porte mac se non sono già installate.
Prima installa il pacchetto python_select:
Sudo port install python_select
Già ora puoi verificare quali distribuzioni python sono disponibili sul tuo sistema. Basta emettere il comando:
port select --list python (MacPorts 2.x)
python_select -l (MacPorts 1.x)
Nel mio caso ha stampato almeno la versione di Python che viene fornita di default con Snow Leopard: python26-Apple
.
port select --show python (MacPorts 2.x)
python_select -s (MacPorts 1.x)
mostra la versione attualmente selezionata, ad es. python26-Apple
. Quindi, vedi, questo pacchetto funziona bene con Mac. Per ulteriori opzioni problema
port select (MacPorts 2.x)
python_select -h (MacPorts 1.x)
Di quanto è possibile cercare la versione python disponibile nel repository dei port:
port search python
Questo produrrà una lunga lista di pitoni disponibili.
Per installare i pacchetti desiderati, ad es. python 2.4 esegue:
Sudo port install python24
Ora python_select -s
mostrerà anche il python appena installato. Per passare al problema di Python 2.4:
Sudo port select --set python python24 (MacPorts 2.x)
Sudo python_select python24 (MacPorts 1.x)
Questo comando è persistente tra le shell.
Supponendo che stai usando bash, scrivi:
% type -a python
Questo mostrerà tutti i file eseguibili "python", gli alias, i builtin di Shell (probabilmente nessuno) o le funzioni di bash nel PATH.
Questo dovrebbe aiutarti a identificare meglio cosa sta succedendo qui.
Vuoi creare un link simbolico alla versione desiderata.
cd /Library/Frameworks/Python.framework/Versions
Sudo rm Current
Sudo ln -s /Library/Frameworks/Python.framework/Versions/2.6 Current
Ciò rimuove il puntatore corrente alla versione predefinita di Python e lo imposta sulla versione 2.6.
Non ideale (IMO), ma questo ha risolto tutte le app in cerca di python
nel mio /usr/local/bin/
.
Sudo cp /usr/local/bin/python3 /usr/local/bin/python
Ovviamente, dopo aver installato l'ultima versione di Python.