2010-01-21 14 views
6

Voglio solo costruirlo sul mio computer di sviluppo - l'installazione binaria da Python.org è ancora a 32 bit e installa estensioni (MySQLdb, per esempio) mi sta facendo impazzire cercando di capire le bandiere appropriate per ogni estensione.Come creare Python a 64 bit su OS X 10.6 - SOLO 64 bit, niente assurdità universale

Precisazione: non ho sostituire il sistema di Python, ho appena installato il binario Python.org al suo posto normale/Library/..., non/System/Library/....

Tutto il resto sembra costruire 64 bit per impostazione predefinita, e il predefinito Python 2.6.1 era 64 bit (prima di sostituirlo con la build di Python.org calcolando che si trattava di una sostituzione diretta) `

Voglio solo un build solo 64 bit che funzionerà sulla mia unica macchina senza alcun cruft.

Qualcuno ha una risposta semplice?

Grazie molto, [email protected]

risposta

11

Se vi capita di essere utilizzando MacPorts, è semplice come specificare la variante che gli dice di non compilare universale, in questo modo:

sudo port install python26 -universal 

È può visualizzare varianti disponibili utilizzando il comando variants:

% port variants python26               
python26 has the variants: 
    darwin: Platform variant, selected automatically 
    no_tkinter: Disable Tkinter support, which will break IDLE 
    ucs4: Enable support for UCS4 
    universal: Build for multiple architectures 

Come si può vedere, per impostazione predefinita sui 10,6 costruisce la darwin variante, che costruisce SOLO x86_64:

% cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/ 
% file python2.6 
python2.6: Mach-O 64-bit executable x86_64 

confronta con gli binario pitone, che è universale predefinito:

% file /usr/bin/python 
/usr/bin/python: Mach-O universal binary with 3 architectures 
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64 
/usr/bin/python (for architecture i386):  Mach-O executable i386 
/usr/bin/python (for architecture ppc7400):  Mach-O executable ppc 

Se non si utilizza MacPorts, vi consiglio di prendere in considerazione. Si risparmia un sacco di tempo e problemi a dover configurare e compilare manualmente tutto, e c'è un'interfaccia grafica eccellente chiamata Porticus. Tutto gratis e open source, ovviamente!

p.s. Mai sostituire o rinominare i file binari originali! Come suggerito nei commenti di Ned giornaliera:

"O gestire l'accesso al previsto esempio python modificando l'ordine di ricerca nella variabile d'ambiente PATH o, se necessario, utilizzare un percorso assoluto come/opt /local/bin/python2.6" .

+0

Sembra -universal flag * dovrebbe * compilare "Universal" --- in tal caso, è possibile modificare la prima riga. – telliott99

+0

Grazie! Ho avuto un paio di sistemi OS X che sono stati completamente mutilati con versioni precedenti di Fink e MacPorts e che da allora sono stati eliminati. Sto iniziando a sentire come OS X è come una donna bella ma molto alta manutenzione; bello da vedere e da giocare, ma quando c'è lavoro da fare, più di un ostacolo che un aiuto. – ssteinerX

+0

@ telliot99 Si dovrebbe specificare '+ universal' per includerlo,' -universal' lo escluderebbe. Tuttavia è escluso di default, in 10.6 quindi sarebbe estraneo. – jathanism

5

La soluzione più semplice è tirare tutto il necessario da MacPorts:

$ sudo port selfupdate 
$ sudo port install python26 +no_tkinter -universal py26-mysqldb -universal 

che installerà python2.6, l'adattatore MySQLdb, e le necessarie librerie client MySQL. Suggerisco di aggiungere la variante no_tkinter a meno che non si abbia davvero bisogno di tkinter; c'erano alcuni problemi con la versione MacPorts di Tk su 10.6.

MODIFICA: Nota, il MacPorts Python verrà installato come /opt/local/bin/python2.6. Potrebbe essere necessario regolare la shell $ PATH per assicurarsi che/opt/local/bin sia su di esso prima di/usr/local/bin e/usr/bin.Se si vuole/opt/local/bin/python per riferirsi al python2.6 MacPorts, fare quanto sopra e:

$ sudo port install python_select 
$ sudo python_select python26 
+0

Ho installato MacPorts e Python e mysqldb e accidenti se non ottengo lo stesso errore di flippin stavo provando a crearlo da solo. django.core.exceptions.ImproperlyConfigured: Errore durante il caricamento del modulo MySQLdb: il modulo dinamico non definisce la funzione init (init_mysql) Grazie per l'aiuto comunque, ora ... come posso disinstallare quella cosa MacPorts? – ssteinerX

+0

Penso di avere un sistema molto, molto aggrovigliato. Alcune parti arrivano correttamente dal virtualenv che ho creato, altre parti provenienti dall'installazione di Python.org, yikes. Tutto sembra molto familiare dalle mie precedenti esperienze con MacPorts e Fink. Sembra che dovrei disinstallare il materiale sorgente/Python.org in precedenza includendo completamente MySQL. Oh ragazzo. – ssteinerX

+0

Sei sicuro che l'istanza di Django utilizzi MacPorts Python2.6? Se avessi parlato di Django, ti avrei suggerito di importarlo anche da MacPorts: 'sudo port install py26-django'. Stessa cosa per py26-virtualenv o altri pacchetti. Lavora per me eseguendo Django in modalità server di sviluppo. Se stai provando ad eseguirlo con Apache, diventa più complicato. –

3

Una volta fatto ottenere l'installazione di Python a 64 bit utilizzando i metodi di cui sopra sopra, ho anche trovato questo blog post by Aaron Meurer utile per verificare che Python sia di fatto installato come 64-bit. Il post parla anche dell'esecuzione di Python a 64 bit insieme a un'installazione a 32 bit, che a mio avviso è utile per alcuni scopi.

5

Sempre macports ... sheesh

Questo è quello che ho fatto:

~: wget http://python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2 
~: tar xjf Python-2.6.5.tar.bz2 
~: cd Python-2.6.5 
~: ./configure ./configure MACOSX_DEPLOYMENT_TARGET=10.6 --enable-framework --with-universal-archs="64-bit" CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" 
~: make -j6 
~: sudo make install 

potrebbe essere un po 'ridondante sulle cose FLAGS, ma ha funzionato.

+0

Interessante. Per quanto mi aspetti, il passo di configurazione esplode con i parametri dell'esempio. In realtà non è necessario alcun FLAG o '--with-universal-archs 'quando si costruisce su un sistema 10.6 con capacità 64 bit. Ma una volta arrivato alla fine, probabilmente scoprirai che uno o più moduli di libreria standard non sono stati creati correttamente, come '_tkinter' o' _curses_panel' o qualcos'altro. La loro assenza potrebbe non essere la fine del mondo per il tuo uso, ma questo è * uno * dei motivi per cui consiglio di utilizzare un programma di installazione binario o un gestore di pacchetti, come MacPorts: per ottenere i piccoli dettagli corretti. –

+0

Ahhh ci vedo. Beh, non ho avuto un problema con _curses_panel, ma probabilmente è perché anch'io lo costruisco da solo. E non ho mai avuto bisogno di Tkinter neanche. – rossipedia

Problemi correlati