2010-01-21 18 views
6

Solo quiero construir esto en mi máquina de desarrollo - la instalación binaria de Python.org aún es de 32 bits y está instalando extensiones (MySQLdb, por ejemplo) me está volviendo loco al tratar de encontrar las banderas adecuadas para cada extensión.Cómo compilar Python de 64 bits en OS X 10.6 - SOLO 64 bit, sin tonterías universales

Aclaración: Yo no reemplazó el sistema de Python, que acaba de instalar el binario Python.org a su lugar normal en/Library/..., no/System/Library/....

Todo lo demás parece construir 64 bits por defecto, y el predeterminado Python 2.6.1 era de 64 bits (antes de que lo reemplazara con la versión de Python.org suponiendo que era un reemplazo directo) `

Solo quiero una compilación de 64 bits que se ejecutará en mi única máquina sin ningún tipo de cruft.

¿Alguien tiene una respuesta simple?

Gracias mucho, [email protected]

Respuesta

11

Si sucede utilizar MacPorts, es tan simple como que especifica la variante que dice que no compilar universal, así:

sudo port install python26 -universal 

Usted puede ver las variantes disponibles con el 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 

Como se puede ver, de forma predeterminada en que se basa el 10,6 darwin variante, que se basa x86_64 SOLAMENTE:

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

Comparar defecto binaria pitón, que es universal:

% 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 

Si no se está usando MacPorts, sugiero que se tiene en cuenta. Se ahorra mucho tiempo y angustia al tener que configurar y compilar manualmente todo, y hay una excelente interfaz GUI llamada Porticus. Todas las fuentes gratuitas y abiertas, por supuesto!

p.s. Nunca ¡reemplace o renombre los binarios originales del sistema! Como se sugiere en los comentarios de Ned diario:

"Cualquiera de administrar el acceso a la instancia destinada pitón cambiando el orden de búsqueda en la variable de entorno PATH o, si es necesario, utilizar una ruta absoluta como/opt /local/bin/python2.6 ".

+0

Parece que el distintivo -universal * debe * compilar "Universal" --- si es así, es posible que desee editar la primera línea. – telliott99

+0

¡Gracias! Tengo un par de sistemas OS X tempranos completamente mutilados con versiones anteriores de Fink y MacPorts y me he rehuido desde entonces. Empiezo a sentir que OS X es como una hermosa pero muy alta mujer de mantenimiento; agradable de mirar y jugar, pero cuando hay trabajo por hacer, más un obstáculo que una ayuda. – ssteinerX

+0

@ telliot99 Uno especificaría '+ universal' para incluirlo,' -universal' lo excluiría. Sin embargo, está excluido por defecto, en 10.6 por lo que sería extraño. – jathanism

5

La solución más simple es tirar de todo lo que necesita de MacPorts:

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

que instalará python2.6, el adaptador MySQLdb, y las bibliotecas cliente de MySQL necesarias. Sugiero agregar la variante no_tkinter a menos que realmente necesite tkinter; hubo algunos problemas con la versión MacPorts de Tk en 10.6.

EDITAR: Tenga en cuenta que MacPorts Python se instalará como /opt/local/bin/python2.6. Es posible que deba ajustar su shell $ PATH para asegurarse de que/opt/local/bin esté en él antes de/usr/local/bin y/usr/bin.Si quieres/opt// bin/python local para referirse a la python2.6 MacPorts, hacer lo anterior y:

$ sudo port install python_select 
$ sudo python_select python26 
+0

Instalé MacPorts, y Python y mysqldb y maldición si no obtengo el mismo error de flippin 'que estaba tratando de construir yo mismo. django.core.exceptions.ImproperlyConfigured: Error al cargar el módulo MySQLdb: el módulo dinámico no define la función init (init_mysql) Gracias por la ayuda de todos modos, ahora ... ¿cómo desinstalo esa cosa de MacPorts? – ssteinerX

+0

Creo que tengo un sistema muy, muy enredado. Algunas partes vienen correctamente del virtualenv que creé, otras partes provienen de la instalación de Python.org, ¡ay! Todo parece muy familiar de mis experiencias previas con MacPorts y Fink. Parece que tendría que desinstalar todo el material de source/Python.org completamente incluyendo MySQL. Oh chico. – ssteinerX

+0

¿Estás seguro de que tu instancia de Django está utilizando MacPorts Python2.6? Si hubiera mencionado a Django, le habría sugerido que también lo extraiga de MacPorts: 'sudo port install py26-django'. Lo mismo para py26-virtualenv u otros paquetes. Funciona para mí ejecutando Django en el modo de servidor de desarrollo. Si intentas ejecutar esto bajo Apache, se vuelve más complicado. –

3

Una vez que usted consigue la configuración del pitón de 64 bits utilizando los métodos anteriormente descritos anteriormente, también encontré esto blog post by Aaron Meurer útil para verificar que Python de hecho está instalado como de 64 bits. La publicación también habla sobre la ejecución de Python de 64 bits junto con una instalación de 32 bits, lo que supongo que es útil para algunos propósitos.

5

Siempre macports ... sheesh

Esto es lo que hice:

~: 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 

podría ser un poco redundante en la materia banderas, pero funcionó.

+0

Interesante. Para mí, como era de esperar, el paso de configuración explota con los parámetros en su ejemplo. En realidad, no necesitas ninguno de los FLAGS o '--with-universal-archs' cuando construyes un sistema 10.6 con capacidad para 64 bits. Pero una vez que llegue al final, probablemente encontrará que uno o más módulos de biblioteca estándar no se compilaron correctamente, como '_tkinter' o' _curses_panel' u otra cosa. Su ausencia puede no ser el fin del mundo para su uso, pero esta es * una * de las razones por las que recomiendo usar un instalador binario o un administrador de paquetes, como MacPorts: para obtener los pequeños detalles correctos. –

+0

Ahhh ya veo. Bueno, no tuve un problema con _curses_panel, pero eso es probablemente porque también lo hice yo mismo. Y nunca necesité tkinter tampoco. – rossipedia

Cuestiones relacionadas