当前位置: 首页 > 面试题库 >

Mac OS X上Python的框架版本与非框架版本之间的差异

淳于健
2023-03-14
问题内容

在Mac OS X上,Python的Framework构建和非Framework构建(即标准UNIX构建)之间有什么区别?另外,每种技术都有哪些优缺点?

初步研究

这是我在发布此问题之前发现的信息:

  • [Pythonmac-SIG]为什么需要构建Python框架
    • B. Grainger:“我似乎想起来,如果您想使用本机Mac GUI进行任何操作,都需要使用Python的Framework构建。我的理解正确吗?”
    • C. Barker:“相当多-要访问Mac GUI,一个应用程序必须位于适当的Mac应用程序捆绑包中。而Framework版本提供了这一点。”
  • Apple Developer Connection:框架定义
    • “框架是一个捆绑包(结构化目录),其中包含动态共享库以及相关资源,例如nib文件,图像文件和头文件。开发应用程序时,您的项目将链接到一个或多个框架。对于例如,iPhone应用程序项目默认情况下链接到Foundation,UIKit和Core Graphics框架,您的代码通过应用程序编程接口(API)访问框架的功能,API通过框架的头文件发布。动态共享,多个应用程序可以同时访问框架代码和资源。系统根据需要将框架的代码和资源加载到内存中,并在所有应用程序之间共享资源的一个副本。”
  • 框架编程指南:什么是框架?
    • “与静态链接库和其他类型的动态共享库相比,Framework具有以下优点:
    • 框架将相关但独立的资源分组在一起。此分组使安装,卸载和查找这些资源变得更加容易。
    • 与库相比,框架可以包含更多种资源类型。例如,框架可以包括任何相关的头文件和文档。框架的多个版本可以包含在同一捆绑中。这使得可以与旧程序向后兼容。
    • 在任何给定时间,只有一个框架的只读资源的副本在物理上驻留在内存中,而不管有多少进程正在使用这些资源。资源共享减少了系统的内存占用,并有助于提高性能。”

背景

在Mac OS X 10.6 Snow Leopard之前,我对此并没有考虑太多,因为我只是下载并安装Python 2.6.2 Mac InstallerDiskImage(这是一个框架构建),然后使用virtualenv,pip开展业务。等等。但是,随着Snow
Leopard更改为64位,gcc等,我注意到了一些问题,这些问题使我想要从源代码构建/编译Python
2.6.2+,这使我进入了自己的领域。将Python构建为MacOSX | Darwin框架的优缺点的问题。


问题答案:

您已经列出了制作框架的所有重要优点(祝贺您进行了出色的研究和报告!);唯一的缺点是,很难正确地构建一个,但是如果您从引用的安装程序示例中获得一些线索,那么它应该是可行的。

顺便说一句,SnowLeopard随附的系统Python有什么问题?我还没有从Leopard升级(长话说,我确实有“家庭许可证”升级DVD,但是在升级之前需要Snow
Leopard修复一些问题),所以我还没有第一手经验,但我确实知道它是2.6版本,并且有32位和64位版本…因此,为什么需要构建自己的框架?



 类似资料:
  • 我们目前正在使用以下框架及其版本。 Spring启动父-1.4.5。发布 Vaadin-Bom-7.7.3 Vaadin-Spring启动-1.1.0 Vaadin-Spring-1.1.0 计划升级Spring引导父版本。但我敢肯定,如果我们升级Spring引导父版本,那么需要升级Vaadin依赖。我花了几天时间找到最新的Vaadin框架与Spring Boot jar的兼容性。但无法得出解决方

  • 几个月前,我已经将Vaadin作为Eclipse插件安装,如何找出我的机器上当前安装了哪个版本的Vaadin框架?

  • 问题内容: 我想知道(我的Java应用程序的)播放框架版本与我的应用程序的Java版本之间是否有任何联系? 示例:如果我使用play 2.2.1并在计算机上安装了java8。我可以在代码中使用java8吗? 如果有连接。java8的第一个播放版本是什么? 谢谢你妮芙 问题答案: Play 2.3.x是提及Java 8的第一个版本,请参见此处 今天早晨,我正在与我的一位同事交谈,他发现运行2.1.x

  • Uni-app SDK APICloud SDK React Native SDK Flutter SDK Weex SDK

  • 我正在尝试将powermock和mockito与Spring一起使用。我以前用过,但没有Spring。Spring-cloud-stream-test-support已经提供了和一些其他依赖项。Mockito在这个JUnit版本中也运行良好。 但是,我必须模拟一些静态方法调用,所以我需要使用PowerMock。我已经尝试将Powermock包含在JUnit和Mockito的这些版本中。 JUnit

  • 这个问题继续下去,但可以总结为:如何让Hibernate Validator5与Resteasy一起工作?JAX-RS2.0不需要bean验证1.1吗?或者它是否适用于Bean验证1.0) 我在这篇文章中给出了超出我问题范围的信息,以便重现我在这一点上所做的所有步骤和错误,希望它能帮助像我一样希望在WAS 8.5.5上拥有JAX-RS2.0(RestEasy impl)的任何人。我完全没有找到医生