49 votes

Différences entre les versions Framework et non Framework de Python sur Mac OS X

Question

Quelles sont les différences entre un Cadre de génération et un non-Cadre à construire (à savoir, UNIX standard construire) de Python sur Mac OS X? Aussi, quels sont les avantages et les inconvénients de chacun?

La Recherche Préliminaire

Voici les informations que j'ai trouvé avant de poster cette question:

  • [Pythonmac-SIG] Pourquoi est un Framework version de Python nécessaires
    • B. Grainger: "je me souviens qu'un Framework version de Python est nécessaire si vous voulez faire quelque chose avec le natif de Mac de l'interface graphique. Est ma compréhension correcte?"
    • C. Barker: "Assez bien (pour avoir accès à la Mac de l'interface utilisateur, une application doit être dans une bonne application Mac bundle. Le Cadre construire des fournitures."
  • Apple Developer Connection: Cadre De Définition
    • "Un framework est un ensemble (un répertoire structuré) qui contient une dynamique partagée, la bibliothèque avec les ressources associées, telles que la plume de fichiers, des fichiers image et des fichiers d'en-tête. Lorsque vous développez une application, votre projet de liens vers une ou plusieurs cadres. Par exemple, l'application iPhone de projets en lien par défaut à la Fondation, UIKit, et les Graphiques de Base des cadres. Votre code d'accès à la capacité d'un cadre par le biais de l'interface de programmation d'application (API), qui est publié par le cadre de ses fichiers d'en-tête. Parce que la bibliothèque est dynamique partagée, plusieurs applications peuvent accéder au code de la structure et des ressources simultanément. Le système charge le code et les ressources d'un cadre en mémoire, en tant que de besoin, et partage une copie d'une ressource parmi toutes les applications."
  • Cadre Guide de Programmation: Quels sont les Cadres?
    • "Les cadres offrent les avantages suivants par rapport à la statique des librairies et d'autres types de dynamique bibliothèques partagées:
      • Les cadres du groupe liées, mais distinctes, les ressources. Ce groupement est plus facile à installer, désinstaller, et de localiser ces ressources.
      • Les cadres peuvent inclure une plus grande variété de types de ressources que les bibliothèques. Par exemple, un cadre peut prévoir une analyse des fichiers d'en-tête et de la documentation. Plusieurs versions d'un cadre peut être inclus dans le même bundle. Cela permet d'être compatible avec les anciens programmes.
      • Une seule copie d'un cadre de lecture seule en ressources résider physiquement dans la mémoire à un moment donné, quel que soit le nombre de processus à l'aide de ces ressources. Ce partage de ressources réduit l'empreinte mémoire du système et permet d'améliorer les performances."

Arrière-plan

Avant Mac OS X 10.6 Snow Leopard, je n'avais pas pensé beaucoup à ce sujet, que je ne serait tout simplement de télécharger et d'installer le Python 2.6.2 Mac Image du Disque d'installation, qui est un framework, et de vaquer à mes affaires à l'aide de virtualenv, pip, etc. Cependant, avec les changements dans Snow Leopard 64 bits, gcc, etc., J'ai remarqué que certaines questions qui ont fait de moi voulons construire/compiler Python 2.6.2+ moi-même à partir de la source, ce qui m'amène à ma question sur les différences et les avantages/inconvénients de la construction de Python comme un MacOSX|Darwin cadre.

13voto

Alex Martelli Points 330805

Vous avez déjà la liste de tous les importants avantages de faire un cadre (félicitations pour l'excellence de la recherche et les rapports de celle-ci!); le seul revers de la médaille est qu'il est plus difficile à organiser pour construire un correctement, mais si vous prenez vos indices à partir des exemples dans le programme d'installation que vous citez, il devrait être faisable.

BTW, quel est le problème avec le système de Python qui est livré avec Snow Leopard? Je n'ai pas mis à jour de Leopard encore (une longue histoire... j'ai de la famille "licence" DVD de mise à jour, mais besoin de Snow Leopard pour corriger certaines choses avant que je peux mettre à jour), donc je n'ai aucune expérience de première main avec, mais je sais que c'est un 2.6 construire et il vient dans les deux versions 32 bits et les versions 64 bits... alors, pourquoi avez-vous besoin pour construire votre propre cadre de référence?

4voto

Thomas Points 38

Il y a une autre différence: en général le Cadre de l'installation fournie par le programme d'installation à partir de python.org a plusieurs architectures.

$ 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 vous installez à partir de la source et vous n'avez pas délibérément changer cela, votre libpython a qu'une seule architecture. J'ai eu des cas où les deux architectures en fait entraîné des problèmes (au moins je crois que c'était la raison), à savoir lors de l'installation de la HDF5 bindings python (h5py).

Et il y a encore une autre différence: certains outils nécessitent l'installation du framework. Par exemple, PyQt, et en particulier le protocole sip. Alors qu'il est possible d'installer sip et PyQt, même pour les non-cadre version de python, c'est beaucoup plus compliqué.

Comme pour la décision que préférez, je ne sais pas encore. Pour le moment, je suis allé pour la non-cadre de l'option, mais je dois dire aussi qu'il m'a causé quelques maux de tête.

1voto

bsergean Points 21

Si vous voulez envoyer votre code (le faire fonctionner sur une autre machine), vous feriez mieux d'utiliser la version système de python, sinon votre comportement de programme ne sera pas défini sur les autres machines.

0voto

tehfink Points 87

J'utilise Macports sur 10.6, ce qui rend très simple l'installation de plusieurs versions de python et la commutation entre celles-ci et la version d'Apple:

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

La version la plus récente de python26, 2.6.2, est compilée et fonctionne bien sous 10.6.1: trac.macports.org/browser/trunk/dports/lang/python26/Portfile.

0voto

Wheat Points 307

Cadre s'appuie sont détenus par le compte 'root' lors de l'installation. Une source de construire sera détenue par le compte de l'installer. L'avantage (et l'inconvénient) de la maîtrise de l'installation de Python, c'est que vous n'avez pas besoin de modifier les comptes de la modifier.

Une petite différence est que le Cadre s'appuie sont construites contre le EditLine de la bibliothèque. Source versions sont généralement compilé avec la bibliothèque Readline. En fonction de la bibliothèque Python est compilé contre, la readline module de la bibliothèque standard, fonctionne légèrement différemment. Voir " l'homme python sur Mac OS X pour plus de détails sur cette.

Il y a une belle buildout pour l'automatisation de la compilation de Python 2.4, 2.5 et 2.6 de la source sur Mac OS X, ce qui est expliqué ici. Cela permettra de compiler à l'encontre d'une version personnalisée de readline. Toutefois, l'utilité de script de la source d'installation est que vous pouvez faire des ajustements à votre custom Python s'appuie, par exemple, l'installation essentiel des distributions comme virtualenv, ou plus difficile d'installer des distributions comme PIL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X