working with descargar python macos frameworks

with - Diferencias entre compilaciones de Framework y ajenas a Framework de Python en Mac OS X



python download (5)

Pregunta

¿Cuáles son las diferencias entre una compilación Framework y una compilación no Framework (es decir, compilación UNIX estándar) de Python en Mac OS X? Además, ¿cuáles son las ventajas y desventajas de cada uno?

Investigación preliminar

Aquí está la información que encontré antes de publicar esta pregunta:

  • [Pythonmac-SIG] ¿Por qué es necesario construir Framework de Python?
    • B. Grainger: "Parece recordar que se necesita una versión Framework de Python si quieres hacer algo con la GUI nativa de Mac. ¿Es correcto mi entendimiento?"
    • C. Barker: "Bastante: para acceder a la GUI de Mac, una aplicación debe estar en un paquete de aplicaciones de Mac adecuado. El Framework compila eso".
  • Conexión de desarrollador de Apple: definición de marco
    • "Un marco es un paquete (un directorio estructurado) que contiene una biblioteca compartida dinámica junto con recursos asociados, como archivos semilla, archivos de imágenes y archivos de encabezado. Cuando desarrolla una aplicación, su proyecto se vincula a uno o más marcos. Por ejemplo, los proyectos de aplicaciones para iPhone se vinculan por defecto con los marcos Foundation, UIKit y Core Graphics. Su código accede a las capacidades de un framework a través de la interfaz de programación de aplicaciones (API), que publica el framework a través de sus archivos de cabecera. se comparte dinámicamente, múltiples aplicaciones pueden acceder al código de la infraestructura y a los recursos simultáneamente. El sistema carga el código y los recursos de una infraestructura en la memoria, según sea necesario, y comparte una copia de un recurso entre todas las aplicaciones ".
  • Guía de programación de framework: ¿Qué son Frameworks?
    • "Los marcos ofrecen las siguientes ventajas sobre las bibliotecas vinculadas de forma estática y otros tipos de bibliotecas compartidas dinámicas:
      • Los marcos se relacionan con los recursos del grupo, pero separados. Esta agrupación facilita la instalación, desinstalación y localización de esos recursos.
      • Los marcos pueden incluir una variedad más amplia de tipos de recursos que las bibliotecas. Por ejemplo, un marco puede incluir cualquier archivo de encabezado relevante y documentación. Se pueden incluir múltiples versiones de un marco en el mismo paquete. Esto hace que sea compatible con versiones anteriores de programas anteriores.
      • Solo una copia de los recursos de solo lectura de un marco reside físicamente en la memoria en un momento dado, independientemente de cuántos procesos estén usando esos recursos. Este intercambio de recursos reduce la huella de memoria del sistema y ayuda a mejorar el rendimiento ".

Fondo

Antes de Mac OS X 10.6 Snow Leopard, no había pensado mucho sobre esto, ya que simplemente descargué e instalé la imagen de disco del instalador de Mac Python 2.6.2 , que es una compilación de framework, y hago mi negocio usando virtualenv, pip Sin embargo, con los cambios en Snow Leopard a 64 bits, gcc, etc., he notado algunos problemas que me han hecho querer compilar / compilar Python 2.6.2+ yo mismo desde la fuente, lo que me lleva a mi cuestión de las diferencias y ventajas / desventajas de construir Python como un framework de MacOSX | Darwin.


Hay otra diferencia: por lo general, la instalación de Framework proporcionada por el instalador de python.org tiene varias arquitecturas.

$ file libpython2.7.dylib

libpython2.7.dylib: Mach-O universal binary with 2 architectures libpython2.7.dylib (for architecture i386): Mach-O dynamically linked shared library i386 libpython2.7.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64

Si lo instala desde el origen y no lo modifica deliberadamente, su libpython solo tiene una arquitectura. He tenido casos en los que las dos arquitecturas realmente causaron problemas (al menos creo que esta fue la razón), concretamente al instalar los enlaces de python HDF5 (h5py).

Y aún hay otra diferencia: algunas herramientas requieren la instalación del marco. Por ejemplo, PyQt, y en particular sip. Si bien es posible instalar sip y PyQt incluso para la versión no marco de python, es mucho más complicado.

En cuanto a la decisión de qué preferir, todavía no lo sé. Por el momento, opté por la opción sin marco, pero debo decir que también me causó algunos dolores de cabeza.


Las compilaciones de marco son propiedad de la cuenta ''raíz'' cuando se instalan. Una compilación de origen será propiedad de la cuenta que lo instale. La ventaja (y la desventaja) de tener la propiedad de la instalación de Python es que no necesita cambiar las cuentas para modificarla.

Una pequeña diferencia es que las compilaciones de Framework se compilan contra la biblioteca EditLine. Las compilaciones de origen generalmente se compilan contra la biblioteca Readline. Dependiendo de qué biblioteca compile Python, el módulo readline en la biblioteca estándar funciona de forma ligeramente diferente. Consulte ''man python'' en Mac OS X para obtener más detalles sobre esto.

Hay una buena compilación para automatizar la compilación de Python 2.4, 2.5 y 2.6 desde la fuente en Mac OS X, que se explica aquí . Esto compilará contra una compilación personalizada de readline. Sin embargo, la utilidad de las secuencias de comandos de la instalación de origen es que puede realizar ajustes adicionales a las compilaciones de Python personalizadas, por ejemplo, la instalación de distribuciones esenciales como virtualenv o las distribuciones más difíciles de instalar, como PIL.


Si va a enviar su código (lo está ejecutando en otra máquina), será mejor que use la versión del sistema de python; de lo contrario, el comportamiento de su programa no estará definido en las otras máquinas.


Utilizo Macports en 10.6, lo que hace que sea muy simple instalar varias versiones de python y cambiar entre ellas y la versión de Apple:

sudo port install python26 sudo port install python_select sudo python_select -l

La versión más reciente de python26 es 2.6.2, y compila y ejecuta bien en 10.6.1: trac.macports.org/browser/trunk/dports/lang/python26/Portfile


Ya ha enumerado todas las ventajas importantes de hacer un marco (¡felicidades por la excelente investigación y presentación de informes al respecto!); la única desventaja es que es más difícil organizar uno correctamente, pero si tomas tus pistas de los ejemplos en el instalador que citas, debería ser factible.

Por cierto, ¿qué pasa con el sistema Python que viene con Snow Leopard? Todavía no me he actualizado de Leopard (cuento largo ... Tengo el DVD de actualización de "licencia familiar", pero necesito que Snow Leopard corrija algunas cosas antes de poder actualizarlo), así que aún no tengo experiencia de primera mano con eso , pero sé que es una versión 2.6 y viene en versiones de 32 bits y de 64 bits ... ¿por qué necesitas construir tu propio framework?