Вопрос
Каковы различия между сборкой Framework и сборкой не-Framework (т.е. стандартной сборкой UNIX) Python в Mac OS X? Кроме того, каковы преимущества и недостатки каждого из них?
Предварительные исследования
Вот информация, которую я нашел до публикации этого вопроса:
- [Pythonmac-SIG] Зачем нужна компоновка Framework для Python
- В. Грейнджер: "Кажется, я помню, что для Python требуется сборка Framework, если вы хотите что-то сделать с собственным Mac GUI. Правильно ли я понимаю это?"
- С. Баркер: "Довольно многое - для доступа к графическому интерфейсу Mac, приложение должно быть в подходящем комплекте приложений для Mac. Это обеспечивает сборку Framework."
- Соединение с разработчиками Apple: определение платформы
- "Рамка представляет собой набор (структурированный каталог), который содержит динамическую общую библиотеку вместе со связанными ресурсами, такими как файлы nib, файлы изображений и файлы заголовков. Когда вы разрабатываете приложение, ваш проект связывается с одним или несколькими Например, проекты приложений iPhone по умолчанию привязаны к фреймворкам Foundation, UIKit и Core Graphics. Ваш код обращается к возможностям инфраструктуры через интерфейс прикладного программирования (API), который публикуется каркасом через его заголовочные файлы. Поскольку библиотека динамически разделяется, несколько приложений могут одновременно обращаться к коду инфраструктуры и ресурсам. Система загружает код и ресурсы фреймворка в память по мере необходимости и разделяет одну копию ресурса среди всех приложений."
- Руководство по программированию на платформе: что такое Framework?
- "Frameworks предлагает следующие преимущества перед статическими библиотеками и другими типами динамических разделяемых библиотек:
- Структура структур, связанных, но разделенных, ресурсов вместе. Эта группировка упрощает установку, удаление и поиск этих ресурсов.
- Рамки могут включать более широкий набор типов ресурсов, чем библиотеки. Например, структура может включать любые соответствующие файлы заголовков и документацию. В один и тот же комплект можно включить несколько версий фреймворка. Это позволяет быть обратно совместимым со старыми программами.
- Только одна копия ресурсов только для чтения основывается физически в памяти в любой момент времени, независимо от того, сколько процессов использует эти ресурсы. Это совместное использование ресурсов уменьшает объем памяти системы и помогает повысить производительность.
- "Frameworks предлагает следующие преимущества перед статическими библиотеками и другими типами динамических разделяемых библиотек:
Фон
До Mac OS X 10.6 Snow Leopard я не думал об этом, так как просто загрузил и установил Python 2.6.2 Mac Installer Disk Image, который представляет собой сборку фреймворка, и занимаюсь своим бизнесом с помощью virtualenv, pip и т.д. Однако, с изменениями в Snow Leopard до 64-бит, gcc и т.д., Я заметил некоторые проблемы, которые заставили меня хотеть строить/компилировать Python 2.6.2+ самостоятельно из источника, что приводит меня к моему вопросу о различиях и преимуществах/недостатках построения Python в качестве инфраструктуры MacOSX | Darwin.