# 5. 在 Mac 系統使用 Python

作者:

  Bob Savage <bobsavage@mac.com>

Python 在 Mac 的 macOS 上執行和在其他 Unix 平台上執行的原理非常相似，但值得一提的是在 macOS 上有其他額外的功能，例如整合開發環境 (IDE) 與套件管理。

## 5.1. 取得和安裝 Python

macOS 自 10.8 版本開始至 12.3 版本之間預設安裝 Python 2.7。你也可以到 Python 網站安裝最新的 Python 3 版本。你可以找到建立在"通用二進位 (universal2 binary)" 上的 Python 建置版本，它能夠原生地運行在 Mac 新的 Apple Silicon CPU 與過去的 Intel CPU 上。

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

- 會有一個 `Python 3.12` 資料夾在你的 `Applications` 資料夾中。在這裡你可以找到 IDLE，它是作為官方 Python 發行版標準組成的開發環境；以及 Python Launcher，它負責處理在 Finder 中雙擊 Python 腳本的操作。

- `/Library/Frameworks/Python.framework` 框架，包括 Python 可執行檔案 (executable) 和函式庫 (library)。安裝程式將此位置新增到 shell 路徑。要解除安裝 Python ，你可以移除這三個專案。Python 可執行檔案的符號連結 (symlink) 則放在 `/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 執行時使用幫助選單。

如果要從終端機視窗命令列或 Finder 執行 Python 腳本，首先需要一個編輯器來建立腳本。macOS 附帶了許多標準的 Unix 命令列編輯器，如 vim 和 nano。如果你想要一個更 Mac 化的編輯器，那麼來自 Bare Bones Software 的 BBEdit（參見 http://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

- 透過 finder Info 視窗選擇 Python Launcher 作為開啟腳本（或任何 `.py` 腳本）的預設應用程式，然後雙擊腳本。Python Launcher 有各種用來控制腳本啟動方式的選項。拖曳選項可以讓你一次更改多個選項，或使用其偏好設定選單以全域性地更改內容。

### 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 的技術問答集 QA1067。

更多關於安裝 Python 套件的資訊，參閱 安裝額外的 Python 套件 部分。

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

Python 附帶標準的 IDLE 開發環境。有關使用 IDLE 的詳細介紹，請見 https://www.hashcollision.org/hkn/python/idle_intro/index.html。

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

這個章節已經被移動到 Python Packaging User Guide。

## 5.4. 開發 GUI 程式

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

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

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

有許多替代 macOS GUI 工具套件可用：

- PySide：Qt GUI 工具包的官方 Python 繫結。

- PyQt：Qt 的替代 Python 繫結。

- Kivy：一個支援桌面和行動平臺的跨平臺 GUI 工具包。

- Toga：BeeWare 專案的一部分；支援桌面、行動、網頁和控制台應用程式。

- wxPython：一個支援桌面作業系統的跨平臺工具包。

## 5.5. 發行 Python 應用程式

A range of tools exist for converting your Python code into a standalone distributable application:

- py2app：支援從 Python 專案打包成 macOS `.app`。

- Briefcase: Part of the BeeWare Project; a cross-platform packaging tool that supports creation of `.app` bundles on macOS, as well as managing signing and notarization.

- PyInstaller：一個跨平臺打包工具，可以將單一檔案或資料夾打包成可分發的檔案。

## 5.6. 其他資源

Pythonmac-SIG 郵件清單對於 Mac 上的 Python 使用者和開發者是一個極佳的支援資源：

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

另一個好用資源是 MacPython wiki：

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