Question
Mac OS X 上的 Python 框架构建和非框架构建(即标准 UNIX 构建)之间有什么区别?另外,各自的优点和缺点是什么?
初步研究
以下是我在发布此问题之前找到的信息:
-
[Pythonmac-SIG] Why is Framework build of Python needed http://www.mail-archive.com/pythonmac-sig@python.org/msg08954.html
- B. Grainger:“我似乎记得,如果你想使用本机 Mac GUI 做任何事情,就需要 Python 的框架构建。我的理解正确吗?”
- C. Barker:“差不多 - 要访问 Mac GUI,应用程序需要位于正确的 Mac 应用程序包中。框架构建提供了这一点。”
-
Apple Developer Connection: Framework Definition http://developer.apple.com/mac/library/documentation/General/Conceptual/DevPedia-CocoaCore/Framework.html
- “框架是一个包(结构化目录),其中包含动态共享库以及相关资源,例如 nib 文件、图像文件和头文件。当您开发应用程序时,您的项目会链接到一个或多个框架。对于例如,iPhone 应用程序项目默认链接到 Foundation、UIKit 和 Core Graphics 框架。您的代码通过应用程序编程接口 (API) 访问框架的功能,该接口由框架通过其头文件发布。因为库动态共享,多个应用程序可以同时访问框架代码和资源。系统根据需要将框架的代码和资源加载到内存中,并在所有应用程序之间共享资源的一份副本。
-
Framework Programming Guide: What are Frameworks? http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html#//apple_ref/doc/uid/20002303
- "Frameworks offer the following advantages over static-linked libraries and other types of dynamic shared libraries:
- 框架将相关但独立的资源组合在一起。这种分组使得安装、卸载和查找这些资源变得更加容易。
- 框架可以包含比库更广泛的资源类型。例如,框架可以包括任何相关的头文件和文档。
一个框架的多个版本可以包含在同一个包中。这使得向后兼容旧程序成为可能。
- 在任何给定时间,无论有多少进程正在使用这些资源,框架的只读资源都只有一份物理副本驻留在内存中。这种资源共享减少了系统的内存占用并有助于提高性能。”
背景
在 Mac OS X 10.6 Snow Leopard 之前,我没有考虑太多,因为我只是下载并安装Python 2.6.2 Mac 安装程序磁盘映像 http://www.python.org/download/,这是一个框架构建,并使用 virtualenv、pip 等来处理我的业务。但是,随着 Snow Leopard 到 64 位、gcc 等的变化,我注意到一些问题让我想要构建/compile Python 2.6.2+ 我自己从源代码开始,这让我想到了将 Python 构建为 MacOSX|Darwin 框架的差异和优点/缺点的问题。
您已经列出了制作框架的所有重要优势(祝贺您出色的研究和报告!);唯一的缺点是很难安排正确构建一个,但是如果您从引用的安装程序中的示例中获取线索,那么它应该是可行的。
BTW,Snow Leopard 自带的系统 Python 出了什么问题?我还没有从 Leopard 升级(长话短说……我确实有“家庭许可证”升级 DVD,但需要 Snow Leopard 修复一些问题才能升级),所以我还没有这方面的第一手经验,但我知道它是 2.6 版本,并且有 32 位和 64 位版本......那么为什么你需要构建自己的框架呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)