2010-09-02 2 views
8

nella pagina informativaPerché non posso cambiare il python predefinito del sistema nel modo in cui Apple dice che posso?

http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/python.1.html

Apple dice:

MODIFICA DELLA PITONE DI DEFAULT

Utilizzando

 % defaults write com.apple.versioner.python Version 2.5 

farà la versione 2.5 l'utente predefinito durante l'esecuzione del sia lo comandi python e pythonw (versioneer è il nome interno del software di selezione versione utilizzato).

Questo semplicemente non funziona!

tppllc-Mac-Pro:~ swirsky$ python --version 
Python 2.7 
tppllc-Mac-Pro:~ swirsky$ defaults write com.apple.versioner.python Version 2.5 
tppllc-Mac-Pro:~ swirsky$ python --version 
Python 2.7 

e nemmeno l'interruttore per fare 32 bit pitone difetto

64-bit supportano

versione 2.6 supporta l'esecuzione a 64 bit (che è attiva per default). La versione 2.5 supporta solo l'esecuzione a 32 bit.

Come la versione di Python, il comando python può selezionare tra 32 e l'esecuzione a 64 bit (quando entrambi sono disponibili). Utilizzare:

 % defaults write com.apple.versioner.python Prefer-32-Bit -bool yes 

per rendere esecuzione 32 bit predefinito dall'utente (tramite /Library/Preferences/com.apple.versioner.python imposterà il default di sistema). La variabile di ambiente VERSIONER_PYTHON_PREFER_32_BIT può anche essere usati (ha la precedenza sul file di preferenze): conchiglie

 % export VERSIONER_PYTHON_PREFER_32_BIT=yes # 

Bourne-simili o

conchiglie
 % setenv VERSIONER_PYTHON_PREFER_32_BIT yes # 

C-come

I' m giù un rathole qui. Sto cercando di far funzionare wxpython. Ma non funzionerà su Apple Python 2.7 perché non c'è il supporto per il carbonio a 64 bit, e il supporto per il cacao non è ancora terminato in wx.

=== === UPDATE

Grazie per tutto il vostro aiuto! Il mistero è stato risolto. Una cosa che mi ha confuso è che non ho avuto problemi a eseguire wxpython (32 bit) sul mio laptop (un recente i5 macbook pro), ma non funzionava sul mio desktop (un recente i7 mac pro).

Entrambi avevano Python 2.7 e ho pensato che fosse lo stesso. Ma non lo era!

Il Mac Pro ha avuto la x86_64 costruire

tppllc-Mac-Pro:~ swirsky$ file `which python` 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 3 architectures 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386): Mach-O executable i386 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc7400): Mach-O executable ppc 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 

e il computer portatile non ha fatto:

thrilllap-2:thrillscience swirsky$ file `which python` 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc): Mach-O executable ppc 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386): Mach-O executable i386 

io re-installare l'uno senza la versione x86_64 sulla mia macchina desktop, come Non ho ancora bisogno del supporto a 64 bit.

+0

Ciao, come posso installare Python i386? – Believe2014

risposta

3

Penso che la versione di python fornita con OS X 10.6 sia 2.6. Il fatto che la tua linea di comando dice che è 2,7 significa, se ho capito bene, hai installato 2.7 con altri mezzi. (Forse macports, fink, o direttamente compilati.) Quei python non forniti da Apple di solito non supportano il sistema versioner di Apple. Potresti eseguire quanto segue?

$ which python 

cosa dice /usr/bin/python?

+1

Infatti, potrebbe essere impostato anche in uno dei file di punti dell'utente. Prova 'echo $ PATH' per vedere se Python 2.7 è lì da qualche parte? –

+0

Se esegue 'which python' non restituisce '/ usr/bin/python' qual è la soluzione? – mrsoltys

12

defaults write com.apple.versioner.python e VERSIONER_PYTHON_PREFER_32_BIT sono cambiamenti di Apple sviluppate e applicare solo alla Apple in dotazione /usr/bin/python in OS X 10.6 (Python 2.6.1). (AGGIORNAMENTO: Questo vale anche per OS X 10.7 Lion.) Probabilmente hai installato un Python 2.7 usando uno dei programmi di installazione di python.org. Ci sono due 2.7 installer attualmente disponibili su python.org, uno (per 10.5 e sopra) include sia il supporto a 32-bit che a 64-bit. Il secondo (per 10.3 e versioni successive, incluso 10.6) è solo a 32 bit. Presumibilmente, hai installato il primo. Per averlo eseguito in modalità a 32 bit, è possibile richiamare utilizzando il comando arch:

$ arch -i386 python2.7 

Oppure, se si desidera utilizzare sempre a 32 bit, è possibile reinstallare 2.7 utilizzando l'altra installazione. Nota che il programma di installazione a 64 bit di python.org è nuovo in 2.7. E, sfortunatamente, ci sono alcuni problemi con esso, ovvero Tkinter e i programmi che lo utilizzano (incluso IDLE) non funzionano su OS X 10.6. Questo sarà risolto in un aggiornamento di manutenzione. Se ne hai bisogno su 10.6, per ora rimani al solo programma di installazione a 32 bit.

Molto probabilmente la ragione per cui il comando python ora invoca 2.7 è che il programma di installazione python.org aggiorna i profili d'accesso, come .bash_profile di mettere la sua directory bin quadro prima sulla vostra ricerca shell PATH.

$ echo $PATH 
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin: # ... 
$ which python 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python 
$ /usr/bin/python 
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
$ python 
Python 2.7 (r27:82508, Jul 3 2010, 21:12:11) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
$ python -c 'import sys;print("%x"%sys.maxint)' 
7fffffffffffffff 
$ arch -x86_64 python -c 'import sys;print("%x"%sys.maxint)' 
7fffffffffffffff 
$ arch -i386 python -c 'import sys;print("%x"%sys.maxint)' 
7fffffff