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

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

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


5.1. 取得和安裝 MacPython
=========================

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

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

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

* "/Library/Frameworks/Python.framework" 框架，包括 Python 可執行檔案
  (executable) 和函式庫 (library)。安裝程式將此位置新增到 shell 路徑。
  要解除安裝 MacPython ，你可以簡單地移除這三個專案。Python 可執行檔案
  的符號連結 (symlink) 則放在 /usr/local/bin/ 中。

Apple 提供的 Python 建置版本分別安裝在
"/System/Library/Frameworks/Python.framework" 和 "/usr/bin/python" 中
。你不應該去修改或刪除這些內容，因為它們由 Apple 控制並且被 Apple 或第
三方軟體使用。請記住，如果你選擇從 python.org 安裝較新的 Python 版本，
那麼你的計算機上將安裝兩個不同但都可運作的 Python，因此你的路徑和用法
與你想要執行的操作一致非常重要。

IDLE 包含一個幫助選單，讓你可以參閱 Python 文件。如果你是 Python 的新
手，你應該開始閱讀該文件中的教學介紹。

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


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

在 macOS 上開始使用 Python 的最佳方法是透過 IDLE 整合開發環境，參見整
合化開發工具 (IDE) 部分，並在 IDE 執行時使用幫助選單。

如果要從終端機視窗命令列或 Finder 執行 Python 腳本，首先需要一個編輯器
來建立腳本。macOS 附帶了許多標準的 Unix 命令列編輯器，如 **vim** 和
**emacs**。如果你想要一個更 Mac 化的編輯器，那麼來自 Bare Bones
Software 的 **BBEdit** 或 **TextWrangler**（參見
http://www.barebones.com/products/bbedit/index.html）是不錯的選擇，
**TextMate**（參見 https://macromates.com/）也是個選擇。其他編輯器包括
**Gvim**（https://macvim-dev.github.io/macvim/）和 **Aquamacs**（
https://aquamacs.org/）。

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

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

* 把它拖曳到 **PythonLauncher**

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


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
。

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


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

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


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

有幾個方法可以安裝額外的 Python 套件：

* 可以透過標準的 Python distutils 模式（"python setup.py install"）安
  裝套件。

* 許多套件也可以透過 **setuptools** 擴充套件或 **pip** 包裝器
  (wrapper) 安裝，請參閱 https://pip.pypa.io/。


5.4. 於 Mac 上開發 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 下載和安裝；它也可以從原始碼開始
建置。

*wxPython* 是另一種流行的跨平臺 GUI 工具套件，可在 macOS 上本機執行。
套件和文件可從 https://www.wxpython.org 獲得。

*PyQt* 是另一種流行的跨平臺 GUI 工具套件，可在原生 macOS 上執行。更多
資訊可在 https://riverbankcomputing.com/software/pyqt/intro 上找到。


5.5. 於 Mac 上發行 Python 應用程式
==================================

在 Mac 上部署獨立 Python 應用程式的標準工具是 **py2app**。有關安裝和使
用 py2app 的更多資訊，請參考 https://pypi.org/project/py2app/。


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

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

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

另一個好用資源是 MacPython wiki：

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