Python macOS 框架构建

主要观点:

  • 构建 Python 时可通过./configure传递各种选项改变构建方式,有相关文档,但其中一个仅在 macOS 上重要且效果常被误解。
  • macOS 上 GUI 应用为 bundle,包含特定布局和元数据,framework 也是 bundle 包含库,Python 的 framework 构建会附带 stub 应用 bundle,使 Python 进程处于正常应用执行环境,能让各种平台 API 正常工作。
  • 关于 Python 中 framework 的需求不明确,不同东西可能在非 framework 环境中失败,framework 构建包含 macOS 平台期望的部分,但具体哪些需哪些不需随时间变化,且 stub 可能不够。
  • /etc/构建为例说明 framework 与非 framework 构建的类似情况,就像删除/etc可能导致一些未知问题,framework 构建就包含平台期望的所有部分。
  • 大多数用户应使用 framework 构建以保证更多东西能正常工作,非 framework 构建在特定情况下有其优势,如开发只在 Linux 运行的 web 应用等。
  • 作者认为 framework 构建应为默认,应让用户能轻松调用平台 API 处理数据,应关注在所有平台上赋予用户本地计算和平台访问的能力。

关键信息:

  • ./configure选项及文档链接:https://docs.python.org/3.12/...
  • macOS 上 GUI 应用与 framework 的特点
  • Python framework 构建的 stub 应用 bundle 作用
  • /etc/构建的类比
  • framework 与非 framework 构建的适用场景

重要细节:

  • 非 framework 构建可能因未包含某些依赖而导致 IDLE 等 GUI 库无法启动,但其他 GUI 库可能正常。
  • Python 不自带 macOS“cocoa”API 包装器,但可通过 pyobjc 进行询问。
  • Framework 构建通常较大、更难迁移,可能对管理大量 Python 版本不便。
  • 作者感谢赞助者并提供咨询工作联系方式。
阅读 12
0 条评论