Come posso modificare la versione predefinita di Python su Snow Leopard?


27

Di recente ho aggiornato la mia installazione di Mac OS X 10.5 Leopard a 10.6 Snow Leopard, e con ciò è arrivata una versione aggiornata di Python, 2.6.1 (invece se 2.5.1). Ora quando scrivo pythonnel Terminale ricevo 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 /usr/bin/e ho scoperto che per ottenere Python 2.6 devo digitare python2.6.

La domanda è: come si effettua la pythonmappatura dei comandi su Python 2.6?

Risposte:


21

È facile:

defaults write com.apple.versioner.python Version 2.6

Vedere man pythonper una spiegazione completa da Apple.

Inoltre, un gotcha: assicurati di eseguire il Python fornito con il computer e non un altro installato. Fallo digitando which pythonal 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.

Aggiornare

Per rispondere ai commenti di seguito:

Questo non fa quello che la gente chiede.

Lo fa per me, in OS X 10.8.2. Dopo aver fatto defaults write com.apple.versioner.python Version 2.6, la versione predefinita di Python è effettivamente 2.6. (E anche dopo essere tornato alla 2.7.)

Questo è vero se corro pythondirettamente o utilizzo uno script eseguibile che inizia con #!/usr/bin/env python—Vengo 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 nel sys.path con 2.6!)

In effetti, non risolve quel collegamento simbolico.

Tuttavia, esegui uno script breve che print()sia il sys.path(e almeno sulla mia installazione relativamente predefinita) le directory della libreria 2.6 sono sul percorso e le directory 2.7 non sono sul percorso. Né la Currentdirectory con collegamento simbolico sul percorso. Quindi non dovrebbe essere un problema per la maggior parte degli script.

Tuttavia, è possibile, non è stato testato, che il Currentcollegamento simbolico sia utilizzato da easy_installo pip. Ciò causerebbe problemi. Sembra sicuramente un bug che il collegamento simbolico non venga aggiornato quando si aggiorna la versione di Python.


3
Avevi ragione. Molto tempo fa avevo installato MacPython e questo ha rovinato la mia variabile PATH così pythonindicato /Library/Frameworks/Python.framework/Versions/Current/bin. Naturalmente questo non è stato aggiornato a 2.6. Quindi ho sostituito la mia variabile PATH con quella predefinita che ho trovato su Google e ora rimuoverò MacPython dal mio sistema.
SBSTN,

@SBSTN Ho lo stesso problema (percorso python che punta a /Library/Frameworks/Python.framework/Versions/Current/bin) Come posso cambiare questo?
Zach,

Non funziona con Xcode4 in quanto non esiste più / Library / Frameworks / Python * e / usr / bin / python non punta altrove. Qualche idea? MacPorts sarebbe una soluzione ma non voglio installarlo.
Alex,

Ho installato Xcode 4 e funziona ancora come descritto. /usr/bin/pythonè un eseguibile, non un collegamento. /usr/bin/python2.6è un collegamento a cui punta ../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6. Dato che l'eseguibile Python è in /System/Libraryesso dovrebbe essere disponibile indipendentemente dal fatto che / quale versione di Xcode sia installata.
Nate,

Questo non fa quello che la gente chiede. Non sono sicuro del perché sia ​​la risposta.
010110110101

12

Suggerirei di usare le porte mac ...

Esiste un pacchetto chiamato python_select che consente di usare Pythons in parallelo. Quindi prima installa le porte mac se non sono già installate.

Innanzitutto installa il pacchetto python_select:

sudo port install python_select

Già ora puoi controllare quali distribuzioni di 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 è stampato in versione almeno python che viene fornito 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. Come vedi, questo pacchetto funziona perfettamente con il Mac. Per ulteriori problemi con le opzioni

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)

Quindi puoi cercare la versione di Python disponibile nel repository delle porte:

port search python

Questo produrrà un lungo elenco di pitoni disponibili.

Per installare i pacchetti desiderati, ad esempio python 2.4 eseguire:

sudo port install python24

Ora python_select -smostrerà anche il pitone 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.


5

Supponendo che stai usando bash, digita:

% type -a python

Questo ti mostrerà tutti gli eseguibili, gli alias, i builtin della shell (probabilmente nessuno) o le funzioni bash "python" nel tuo PERCORSO.

Questo dovrebbe aiutarti a identificare meglio cosa sta succedendo qui.


3

Si desidera creare un collegamento 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 Python predefinita e lo imposta sulla versione 2.6.


1
Questo è simile a quello che ho fatto. Ma invece ho messo il link in / usr / bin e l'ho chiamato "python" (sovrascrivendo il vecchio eseguibile "python" che la Apple metteva lì). Quindi: sudo ln -s /path/to/2.7 /usr/bin/python. Questo è il modo in cui viene fatto in Linux e ha senso.
Nacht,

0

Non ideale (IMO), ma questo ha risolto tutte le app che cercavo pythonnel mio /usr/local/bin/.

sudo cp /usr/local/bin/python3 /usr/local/bin/python

Naturalmente, dopo aver installato l'ultima versione di Python.


questa è davvero una cattiva idea. L'uso del collegamento simbolico può essere compreso, ma copiare i binari avanti e indietro NON è una buona idea.
Jakuje,

Capito, voglio solo digitare Python nel terminale e farlo puntare a Python3.x ... non troppo tardi per risolvere correttamente.
AGDM,
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.