【发布时间】:2010-11-29 11:52:57
【问题描述】:
问题
Mac OS X 上 Python 的框架构建和非框架构建(即标准 UNIX 构建)之间有什么区别?另外,各有什么优缺点?
初步研究
这是我在发布此问题之前找到的信息:
-
[Pythonmac-SIG] Why is Framework build of Python needed
- 乙。 Grainger:“我似乎记得,如果你想用原生 Mac GUI 做任何事情,就需要一个 Python 框架构建。我的理解正确吗?”
- C. Barker:“几乎——要访问 Mac GUI,应用程序需要位于适当的 Mac 应用程序包中。框架构建提供了这一点。”
-
Apple Developer Connection: Framework Definition
- “框架是一个包(结构化目录),其中包含动态共享库以及相关资源,例如 nib 文件、图像文件和头文件。当您开发应用程序时,您的项目会链接到一个或多个框架。例如,iPhone 应用程序项目默认链接到 Foundation、UIKit 和 Core Graphics 框架。您的代码通过应用程序编程接口 (API) 访问框架的功能,该 API 由框架通过其头文件发布。由于库是动态共享的,因此多个应用程序可以同时访问框架代码和资源。系统根据需要将框架的代码和资源加载到内存中,并在所有应用程序之间共享一个资源的副本。”
-
Framework Programming Guide: What are 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 框架的区别和优缺点。
【问题讨论】:
-
对于使用 Homebrew 的读者,您可以使用
brew install python --framework安装框架构建。
标签: python macos frameworks