5. 在 Mac 系統使用 Python
*************************

作者:
   Bob Savage <bobsavage@mac.com>

运行 macOS 的 Mac 上的 Python 在原则上与其他 Unix 平台上的 Python 非常
相似，但有一些额外的特性 如集成开发环境（IDE）和包管理器值得指出。


5.1. 获取和安装 Python
======================

macOS 曾经在 10.8 至 12.3 版中预装了 Python 2.7。 建议你从 Python 网站
安装最新版本的 Python 3。 那里也提供了当前的 Python "universal2
binary" 编译版，它可以在 Mac 的新式 Apple Silicon 和旧式 Intel 处理器
上原生运行。

在安裝後你必須要做幾件事：

* 你的 "Applications" 文件夹中会有一个 "Python 3.11" 文件夹。 你将在这
  里找到 IDLE，它是作为官方 Python 发行版标准组成部分的开发环境；以及
  **Python Launcher**，它负责处理在 Finder 中双击 Python 脚本的操作。

* 一个框架 "/Library/Frameworks/Python.framework"，它包括 Python 可执
  行文件和库。 安装程序将此位置添加到 shell 路径。 要卸载 Python，你可
  以移除这三个项目。 将有一个 Python 可执行文件的符号链接放在
  "/usr/local/bin/" 中。

備註:

  在 macOS 10.8-12.3 上，Apple 提供的 Python 版本将分别安装在
  "/System/Library/Frameworks/Python.framework" 和 "/usr/bin/python"。
  你绝不应当修改或删除这些内容，因为它们由 Apple 控制并由 Apple 或第三
  方软件使用。 请记住如果你选择从 python.org 安装较新的 Python 版本，
  那么你的计算机上将有两个不同但都可用的 Python 安装版，因此你的路径和
  用法与你想要执行的操作保持一致是非常重要的。

IDLE 包括一个 Help 菜单，允许你访问 Python 文件。 如果你是完全的
Python 新手那么你应当开始阅读该文档中的教程部分。

如果你熟悉其他 Unix 平臺上的 Python，那麼你應該閱讀有關從 Unix shell
執行 Python 腳本的部分。


5.1.1. 如何執行 Python 腳本
---------------------------

你在 macOS 上入门 Python 的最好方式是通过 IDLE 集成开发环境；请参阅 整
合化開發工具 (IDE) 章节并在 IDE 运行时使用 Help 菜单。

如果你想从 Terminal 窗口命令行或 Finder 中运行 Python 脚本那么你首先需
要用一个编辑器来创建你的脚本。 macOS 自带了多个标准的 Unix 命令行编辑
器，其中包括 **vim** **nano**。 如果你想要一个更具 Mac 风格的编辑器，
那么来自 Bare Bones Software 的 **BBEdit** (参见
https://www.barebones.com/products/bbedit/index.html) 是一个很好的选择
，还有 **TextMate** (参见 https://macromates.com)。 其他的编辑器包括
**MacVim** (https://macvim.org) 和 **Aquamacs** (https://aquamacs.org)
。

要從終端機視窗執行腳本，你必須確保 "/usr/local/bin" 位於 shell 搜尋路
徑中。

從 Finder 執行你的腳本時，你有兩個選項：

* 将其拖拽到 **Python Launcher**。

* 选择 **Python Launcher** 作为通过 finder Info 窗口打开脚本（或任何
  ".py" 脚本）和双击它时的默认应用程序。 **Python Launcher** 有各种首
  选项来控制脚本的启动方式。 选项拖拽允许你为单次发起调用更改这些首选
  项，或使用其 Preferences 菜单进行全局性的更改。


5.1.2. 透過 GUI 執行腳本
------------------------

對於舊版本的 Python，你需要注意一個 macOS 的怪異之處：與 Aqua 視窗管理
器溝通的程式（換而言之，任何具有 GUI（圖形化使用者介面）的程式）需要以
特殊方式執行。使用 **pythonw** 而不是 **python** 來啟動這樣的腳本。

Python 3.9 上，你可以使用 **python** 或者 **pythonw**。


5.1.3. 設定
-----------

macOS 上的 Python 遵循所有标准 Unix 环境变量例如 "PYTHONPATH"，但是为
从 Finder 启动的程序设置这些变量是非标准的因为 Finder 在启动时不会读取
你的 ".profile" 或 ".cshrc"。 你需要创建一个文件
"~/.MacOSX/environment.plist"。 详情参见 Apple 的 Technical Q&A QA1067
。

有关安装 Python 包的更多信息，请参阅 安裝額外的 Python 套件 一节。


5.2. 整合化開發工具 (IDE)
=========================

Python 附带了标准的 IDLE 开发环境。 可以在
https://www.hashcollision.org/hkn/python/idle_intro/index.html 找到一
篇有关使用 IDLE 的介绍。


5.3. 安裝額外的 Python 套件
===========================

本小节已移至 Python Packaging User Guide。


5.4. GUI 编程
=============

於 Mac 上使用 Python 來建立 GUI 應用程式有許多選項。

*PyObjC* 是一個 Apple Objective-C/Cocoa 框架的 Python 繫結 (binding)，
這是大多數現代 Mac 開發的基礎。有關 PyObjC 的資訊，請見
https://pypi.org/project/pyobjc/。

標準的 Python GUI 工具套件是 "tkinter"，基於跨平臺的 Tk 工具套件
(https://www.tcl.tk)。Apple 的 OS X 包含了 Aqua 原生版本的 Tk，最新版
本可以從 https://www.activestate.com 下載和安裝；它也可以從原始碼開始
建置。

有许多其他 macOS 的 GUI 工具包可供选择：

* PySide: Qt GUI 工具包 的官方 Python 绑定包。

* PyQt: Qt 的替代性 Python 绑定包。

* Kivy: 一款支持桌面和移动设备的跨平台 GUI 工具包。

* Toga: BeeWare 项目 的一部分；支持桌面、移动设备、Web 和控制台应用。

* wxPython: 一款支持桌面操作系统的跨平台工具包。


5.5. 分发 Python 应用程序
=========================

有一系列工具可将你的 Python 代码转换为独立发布的应用程序：

* py2app: 支持基于 Python 项目创建 macOS ".app" 软件包。

* Briefcase: BeeWare 项目 的一部分；一款支持在 macOS 上创建 ".app" 软
  件包，并能管理签名和公证的跨平台打包工具。

* PyInstaller: 一款通过创建单独文件或目录作为可发布形式的跨平台打包工
  具。


5.6. 其他資源
=============

Pythonmac-SIG 邮件列表是 Mac 上 Python 用户和开发人员的优秀支持资源：

https://www.python.org/community/sigs/current/pythonmac-sig/

另一個好用資源是 MacPython wiki：

https://wiki.python.org/moin/MacPython
