5. 在macOS上使用Python¶
本文旨在概述在Mac電腦上開始使用Python時應瞭解的macOS特定行為。在執行macOS的Mac上使用Python與在其他基於Unix的平臺上使用Python非常相似,但在安裝和某些功能方面存在一些差異。
有多種方法可以獲取和安裝適用於macOS的Python。最新版本的Python的預構建版本可從多個分銷商處獲得。本文件的大部分內容描述瞭如何使用CPython釋出團隊從python.org網站下載的Python。有關其他選項,請參閱替代發行版。
5.1. 使用來自python.org
的macOS版Python¶
5.1.1. 安裝步驟¶
對於當前Python版本(除了那些處於security
狀態的版本),釋出團隊為每個新版本製作一個 Python for macOS 安裝程式包。可用安裝程式的列表可在此處找到。我們建議儘可能使用最新的受支援Python版本。當前的安裝程式提供一個Python的universal2二進位制構建,它可以在所有受廣泛macOS版本支援的Mac(Apple Silicon和Intel)上原生執行,目前通常從至少 macOS 10.15 Catalina 開始。
下載的檔案是標準的macOS安裝程式包檔案(.pkg
)。每個檔案的檔案完整性資訊(校驗和、大小、sigstore簽名等)都包含在釋出下載頁面上。安裝程式包及其內容使用Python Software Foundation
Apple開發者ID證書進行簽名和公證,以滿足macOS Gatekeeper要求。
對於預設安裝,請雙擊下載的安裝程式包檔案。這應該會啟動標準的macOS Installer應用程式,並顯示幾個安裝程式視窗步驟中的第一個。

點選 繼續 按鈕會彈出此安裝程式的 自述檔案。除了其他重要資訊外,自述檔案 還會說明將要安裝的Python版本以及它支援的macOS版本。您可能需要滾動閱讀整個檔案。預設情況下,此 自述檔案 也將安裝在 /Applications/Python 3.14/
中,並隨時可讀。

點選 繼續 將顯示Python及其他包含軟體的許可證。然後您需要 同意 許可證條款才能進行下一步。此許可證檔案也將被安裝並可在以後閱讀。

接受許可證條款後,下一步是 安裝型別 顯示。對於大多數用途,標準的安裝操作集是合適的。

透過按下 自定義 按鈕,您可以選擇省略或選擇安裝程式的某些軟體包元件。單擊每個軟體包名稱以檢視其安裝內容的描述。要同時安裝對可選自由執行緒功能的支援,請參閱安裝自由執行緒二進位制檔案。

無論哪種情況,點選 安裝 都將透過請求安裝新軟體的許可權來開始安裝過程。由於安裝的Python將對Mac的所有使用者可用,因此需要具有Administrator
許可權的macOS使用者名稱。
安裝完成後,將出現 摘要 視窗。

雙擊/Applications/Python 3.14/
視窗中的Install Certificates.command圖示或檔案以完成安裝。

這將開啟一個臨時 終端 shell 視窗,該視窗將使用新的 Python 下載並安裝供其使用的 SSL 根證書。

如果終端視窗中出現Successfully installed certifi
和update complete
,則安裝完成。關閉此終端視窗和安裝程式視窗。
預設安裝將包括
在您的
Applications
資料夾中有一個Python 3.14
資料夾。在這裡您可以找到IDLE,它是官方Python發行版標準組成部分的開發環境;以及Python Launcher,它處理從macOS Finder雙擊Python指令碼。一個框架
/Library/Frameworks/Python.framework
,其中包含Python可執行檔案和庫。安裝程式會將此位置新增到您的shell路徑。要解除安裝Python,您可以刪除這三項。指向Python可執行檔案的符號連結位於/usr/local/bin/
中。
備註
最新版本的 macOS 在 /usr/bin/python3
中包含一個 python3 命令,該命令連結到由 Apple 開發工具 Xcode 或 Command Line Tools for Xcode 提供和使用的通常較舊且不完整的 Python 版本。您不應修改或嘗試刪除此安裝,因為它由 Apple 控制並由 Apple 提供或第三方軟體使用。如果您選擇從 python.org
安裝較新的 Python 版本,您的計算機上將有兩個不同但功能正常的 Python 安裝,它們可以共存。預設安裝程式選項應確保使用其 python3 而不是系統 python3。
5.1.2. 如何執行Python指令碼¶
有兩種方法可以呼叫Python直譯器。如果您熟悉在終端視窗中使用Unix shell,您可以呼叫python3.14
或python3
,可選地後跟一個或多個命令列選項(在命令列和環境中描述)。Python教程還有一個關於如何從shell互動式使用Python的有用部分。
您也可以透過整合開發環境呼叫直譯器。IDLE — Python 編輯器和 shell 是一個基本的編輯器和直譯器環境,包含在 Python 的標準發行版中。IDLE 包含一個幫助選單,允許您訪問 Python 文件。如果您是 Python 的新手,可以閱讀該文件中的教程介紹。
還有許多其他編輯器和IDE可用,請參閱編輯器和IDE以獲取更多資訊。
要從終端視窗執行Python指令碼檔案,您可以使用指令碼檔名呼叫直譯器
python3.14
myscript.py
要從Finder執行指令碼,您可以
將其拖到Python Launcher。
透過 Finder 資訊視窗選擇 Python Launcher 作為預設應用程式來開啟您的指令碼(或任何
.py
指令碼),然後雙擊它。Python Launcher 有各種偏好設定來控制您的指令碼如何啟動。按住 Option 鍵拖動允許您更改一次啟動的設定,或者使用其Preferences
選單來全域性更改設定。
請注意,直接從 macOS Finder 執行指令碼可能會產生與從終端視窗執行不同的結果,因為指令碼不會在通常的 shell 環境中執行,包括 shell 配置檔案中的任何環境變數設定。而且,與任何其他指令碼或程式一樣,請確保您要執行的內容。
5.2. 替代發行版¶
除了標準的macOS python.org
安裝程式外,還有一些可能包含附加功能的第三方macOS發行版。一些流行的發行版及其主要功能
- ActivePython
具有多平臺相容性、文件的安裝程式
- Anaconda
流行的科學模組(如numpy、scipy和pandas)和
conda
包管理器。- Homebrew
適用於 macOS 的軟體包管理器,包括多個版本的 Python 和許多第三方基於 Python 的軟體包(包括 numpy、scipy 和 pandas)。
- MacPorts
另一個適用於macOS的包管理器,包括多個版本的Python和許多第三方基於Python的包。可能包括舊版本macOS的預構建Python版本和許多包。
請注意,發行版可能不包含最新版本的 Python 或其他庫,並且不受核心 Python 團隊的維護或支援。
5.3. 安裝額外的Python包¶
有關更多資訊,請參閱Python打包使用者指南。
5.4. GUI程式設計¶
在Mac上使用Python構建GUI應用程式有幾個選項。
標準的 Python GUI 工具包是 tkinter
,它基於跨平臺的 Tk 工具包(https://www.tcl.tk)。安裝程式中包含 Tk 的 macOS 原生版本。
PyObjC 是 Python 對 Apple Objective-C/Cocoa 框架的繫結。有關 PyObjC 的資訊可從 pyobjc 獲取。
還有一些其他 macOS GUI 工具包可供選擇,包括
5.5. 高階主題¶
5.5.1. 安裝自由執行緒二進位制檔案¶
在 3.13 版本加入。
python.org
Python for macOS 安裝程式包可選擇安裝 Python 3.14 的附加構建,該構建支援 PEP 703,即自由執行緒功能(執行停用 全域性直譯器鎖)。請檢視 python.org
上的釋出頁面,以獲取可能更新的資訊。
自由執行緒模式正在執行並持續改進,但與常規構建相比,單執行緒工作負載有一些額外的開銷。此外,第三方包,特別是帶有擴充套件模組的包,可能尚未準備好在自由執行緒構建中使用,並且會重新啟用GIL。因此,預設情況下不安裝對自由執行緒的支援。它作為單獨的安裝選項打包,可以透過點選安裝程式的 安裝型別 步驟中的 自定義 按鈕(如上所述)來獲得。

如果 Free-threaded Python 軟體包名稱旁邊的複選框被勾選,一個單獨的 PythonT.framework
也將與正常的 Python.framework
一起安裝在 /Library/Frameworks
中。此配置允許自由執行緒 Python 3.14 構建與傳統的(僅限 GIL)Python 3.14 構建在您的系統上共存,同時在安裝或測試時風險最小。此安裝佈局可能會在未來的版本中發生變化。
已知注意事項和限制
預設選中的 UNIX 命令列工具 軟體包將在
/usr/local/bin
中安裝指向自由執行緒直譯器python3.14t
和配置工具python3.14t-config
(可能對軟體包構建者有用)的連結。由於/usr/local/bin
通常包含在您的 shellPATH
中,因此在大多數情況下,使用python3.14t
不需要更改您的PATH
環境變數。在此版本中,Shell 配置檔案更新器 軟體包和
/Applications/Python 3.14/
中的Update Shell Profile.command
不支援自由執行緒軟體包。自由執行緒構建和傳統構建具有獨立的搜尋路徑和獨立的
site-packages
目錄,因此,預設情況下,如果您需要在一個包在兩種構建中都可用,則可能需要在這兩種構建中都安裝。自由執行緒包將安裝一個單獨的pip例項,用於python3.14t
。在沒有venv的情況下使用pip安裝包
python3.14t -m pip install <package_name>
在使用多個 Python 環境時,通常最安全、最簡單的方法是建立和使用虛擬環境。這可以避免可能的命令名稱衝突和關於正在使用哪個 Python 的混淆
python3.14t -m venv <venv_name>
然後啟用。
要執行自由執行緒版本的 IDLE
python3.14t -m idlelib
兩種構建中的直譯器都響應相同的PYTHON 環境變數,這可能會產生意想不到的結果,例如,如果您在 shell 配置檔案中設定了
PYTHONPATH
。如有必要,可以使用命令列選項,如-E
來忽略這些環境變數。自由執行緒構建連結到安裝在傳統框架中的第三方共享庫,例如
OpenSSL
和Tk
。這意味著兩種構建也共享一組由 Install Certificates.command 指令碼安裝的信任證書,因此只需執行一次。如果您不能依賴
/usr/local/bin
中指向python.org
自由執行緒python3.14t
的連結(例如,如果您想在那裡安裝自己的版本或某些其他發行版),您可以顯式設定您的 shellPATH
環境變數以包含PythonT
框架bin
目錄export PATH="/Library/Frameworks/PythonT.framework/Versions/3.14/bin":"$PATH"
傳統的框架安裝預設情況下做類似的事情,除了
Python.framework
。請注意,如果兩個框架bin
目錄都在PATH
中,並且存在像python3.14
這樣的重複名稱,可能會導致混淆;實際使用哪一個取決於它們在PATH
中出現的順序。which python3.x
或which python3.xt
命令可以顯示正在使用哪個路徑。使用虛擬環境可以幫助避免這種歧義。另一個選項可能是為所需的直譯器建立一個shellalias,例如alias py3.14="/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14" alias py3.14t="/Library/Frameworks/PythonT.framework/Versions/3.14/bin/python3.14t"
5.5.2. 使用命令列安裝¶
如果您想使用自動化來安裝 python.org
安裝程式包(而不是使用熟悉的 macOS Installer GUI 應用程式),macOS 命令列 installer 實用程式也允許您選擇非預設選項。如果您不熟悉 installer,它可能有點神秘(有關更多資訊,請參見 man installer)。例如,以下 shell 片段展示了一種執行此操作的方法,使用 3.14.0b2
版本並選擇自由執行緒直譯器選項
RELEASE="python-3.140b2-macos11.pkg" # download installer pkg curl -O https://python.club.tw/ftp/python/3.14.0/${RELEASE} # create installer choicechanges to customize the install: # enable the PythonTFramework-3.14 package # while accepting the other defaults (install all other packages) cat > ./choicechanges.plist <<EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> <dict> <key>attributeSetting</key> <integer>1</integer> <key>choiceAttribute</key> <string>selected</string> <key>choiceIdentifier</key> <string>org.python.Python.PythonTFramework-3.14</string> </dict> </array> </plist> EOF sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /
然後,您可以使用類似下面的方式測試兩個安裝程式構建是否都已可用
$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled $ /usr/local/bin/python3.14t -VV Python 3.14.0b2 free-threading build (v3.14.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ # and the traditional interpreter $ /usr/local/bin/python3.14 -VV Python 3.14.0b2 (v3.14.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)] $ # test that they are also available without the prefix if /usr/local/bin is on $PATH $ python3.14t -VV Python 3.14.0b2 free-threading build (v3.14.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ python3.14 -VV Python 3.14.0b2 (v3.14.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]
備註
當前的python.org
安裝程式只安裝到固定位置,如/Library/Frameworks/
、/Applications
和/usr/local/bin
。您不能使用installer -domain
選項安裝到其他位置。
5.5.3. 分發Python應用程式¶
存在一系列工具可以將您的Python程式碼轉換為獨立的、可分發的應用程式
py2app: 支援從Python專案建立macOS
.app
包。Briefcase: BeeWare 專案的一部分;一個跨平臺打包工具,支援在 macOS 上建立
.app
包,以及管理簽名和公證。PyInstaller: 一個跨平臺打包工具,可建立單個檔案或資料夾作為可分發工件。
5.5.4. 符合App Store要求¶
透過macOS App Store提交分發的應用程式必須透過Apple的應用程式稽核流程。此流程包括一套自動驗證規則,用於檢查提交的應用程式包是否存在問題程式碼。
Python標準庫中包含一些已知會違反這些自動規則的程式碼。雖然這些違規行為似乎是誤報,但Apple的稽核規則不能被質疑。因此,有必要修改Python標準庫以使應用程式透過App Store稽核。
Python 原始碼樹包含一個補丁檔案,它將刪除所有已知會導致 App Store 稽核過程出現問題的程式碼。當 CPython 配置為使用 --with-app-store-compliance
選項時,此補丁會自動應用。
此補丁通常不需要在Mac上使用CPython;如果您在macOS App Store 之外 分發應用程式,也不需要此補丁。它僅在您使用macOS App Store作為分發渠道時才需要。
5.6. 其他資源¶
python.org 幫助頁面包含許多有用資源的連結。Pythonmac-SIG 郵件列表是另一個專門為 Mac 上的 Python 使用者和開發者提供的支援資源。