Mac OS X上的Python和非框架构建之间的差异

Mat*_*kin 49 python macos frameworks

在Mac OS X上,Python构建和非框架构建(即标准UNIX构建)之间有什么区别?另外,每个的优点和缺点是什么?

初步研究

以下是我在发布此问题之前找到的信息:

  • [Pythonmac-SIG]为什么需要使用Python的Framework构建
    • B. Grainger:"我似乎记得,如果你想用原生Mac GUI做任何事情,就需要一个Python的Framework构建.我的理解是否正确?"
    • C. Barker:"非常多 - 要访问Mac GUI,应用程序需要在适当的Mac应用程序包中.框架构建提供了这个."
  • Apple Developer Connection:框架定义
    • "框架是一个包(结构化目录),它包含动态共享库以及相关资源,例如nib文件,图像文件和头文件.当您开发应用程序时,您的项目将链接到一个或多个框架.例如,iPhone应用程序项目默认链接到Foundation,UIKit和Core Graphics框架.您的代码通过应用程序编程接口(API)访问框架的功能,API由框架通过其头文件发布.动态共享,多个应用程序可以同时访问框架代码和资源.系统根据需要将框架的代码和资源加载到内存中,并在所有应用程序之间共享资源的一个副本.
  • 框架编程指南:什么是框架?
    • "与静态链接库和其他类型的动态共享库相比,Frameworks具有以下优势:
      • 框架组相关,但是分开,资源在一起.通过此分组,可以更轻松地安装,卸载和定位这些资源.
      • 框架可以包括比库更多种资源类型.例如,框架可以包含任何相关的头文件和文档.框架的多个版本可以包含在同一个包中.这使得可以向后兼容旧程序.
      • 无论有多少进程正在使用这些资源,在任何给定时间,只有一个框架的只读资源副本驻留在内存中.这种资源共享减少了系统的内存占用,有助于提高性能."

背景

在Mac OS X 10.6 Snow Leopard之前,我没有考虑过这个,因为我只是下载并安装Python 2.6.2 Mac安装程序磁盘映像,这是一个框架构建,并使用virtualenv,pip继续我的业务但是,随着Snow Leopard到64位,gcc等的变化,我注意到一些问题让我想要从源代码构建/编译Python 2.6.2+,这让我想到了将Python构建为MacOSX | Darwin框架的差异和优缺点的问题.

Ale*_*lli 13

您已经列出了制作框架的所有重要优势(祝贺优秀的研究和报告!); 唯一的另一面是,它很难安排建立一个正常的,但如果你从你引用的安装程序的例子来支持你的线索,应该是可行的.

顺便说一下,Snow Leopard附带的系统Python出了什么问题?我还没有从Leopard升级(长篇大论......我确实有"家庭许可证"升级DVD,但在升级之前需要Snow Leopard修复一些东西),所以我还没有第一手经验,但我知道它是一个2.6版本,它有32位和64位版本......所以为什么你需要构建自己的框架?

  • Snow Leopard附带的Python系统是Python 2.6.1.我更喜欢运行2.6.2以获得各种修复. (4认同)