5. Python unter macOS verwenden¶
Dieses Dokument gibt einen Überblick über macOS-spezifisches Verhalten, das Sie kennen sollten, um mit Python auf Mac-Computern zu beginnen. Python auf einem Mac mit macOS ist sehr ähnlich zu Python auf anderen Unix-ähnlichen Plattformen, aber es gibt einige Unterschiede bei der Installation und einigen Funktionen.
Es gibt verschiedene Möglichkeiten, Python für macOS zu beziehen und zu installieren. Vorkompilierte Versionen der neuesten Python-Versionen sind von einer Reihe von Anbietern erhältlich. Ein Großteil dieses Dokuments beschreibt die Verwendung der Pythons, die vom CPython-Release-Team für den Download von der python.org-Website bereitgestellt werden. Weitere Optionen finden Sie unter Alternative Distributionen.
5.1. Python für macOS von python.org verwenden¶
5.1.1. Installationsschritte¶
Für aktuelle Python-Versionen (außer denen mit security-Status) erstellt das Release-Team für jede neue Version ein Python für macOS-Installationspaket. Eine Liste der verfügbaren Installer finden Sie hier. Wir empfehlen die Verwendung der neuesten unterstützten Python-Version, wo immer möglich. Aktuelle Installer bieten einen Universal2-Binärdatei-Build von Python, der nativ auf allen Macs (Apple Silicon und Intel) läuft, die von einer breiten Palette von macOS-Versionen unterstützt werden, derzeit typischerweise ab mindestens macOS 10.15 Catalina.
Die heruntergeladene Datei ist eine Standard-macOS-Installationspaketdatei (.pkg). Informationen zur Dateintegrität (Checksumme, Größe, Sigstore-Signatur usw.) für jede Datei sind auf der Download-Seite des Releases enthalten. Installer-Pakete und ihre Inhalte sind mit Apple Developer ID-Zertifikaten der Python Software Foundation signiert und mit notarized versehen, um die macOS Gatekeeper-Anforderungen zu erfüllen.
Für eine Standardinstallation doppelklicken Sie auf die heruntergeladene Installer-Paketdatei. Dies startet die Standard-macOS-Installer-App und zeigt das erste von mehreren Installer-Fenstern an.
Durch Klicken auf die Schaltfläche Weiter wird das Readme für diesen Installer angezeigt. Neben anderen wichtigen Informationen dokumentiert das Readme, welche Python-Version installiert wird und auf welchen macOS-Versionen sie unterstützt wird. Möglicherweise müssen Sie scrollen, um die gesamte Datei zu lesen. Standardmäßig wird dieses Readme auch in /Applications/Python 3.14/ installiert und ist jederzeit lesbar.
Wenn Sie auf Weiter klicken, werden die Lizenzbedingungen für Python und andere enthaltene Software angezeigt. Sie müssen dann den Lizenzbedingungen Zustimmen, bevor Sie mit dem nächsten Schritt fortfahren können. Diese Lizenzdatei wird ebenfalls installiert und kann später gelesen werden.
Nachdem die Lizenzbedingungen akzeptiert wurden, ist der nächste Schritt die Anzeige des Installationstyps. Für die meisten Anwendungen ist die Standardauswahl der Installationsoperationen geeignet.
Durch Klicken auf die Schaltfläche Anpassen können Sie bestimmte Paketkomponenten des Installers weglassen oder auswählen. Klicken Sie auf jeden Paketnamen, um eine Beschreibung zu sehen, was er installiert. Um auch die Unterstützung für die optionale Free-Threaded-Funktion zu installieren, siehe Installation von Free-Threaded Binaries.
In beiden Fällen beginnt das Klicken auf Installieren den Installationsprozess, indem es die Erlaubnis zur Installation neuer Software anfordert. Ein macOS-Benutzername mit Administrator-Berechtigungen ist erforderlich, da das installierte Python für alle Benutzer des Macs verfügbar sein wird.
Wenn die Installation abgeschlossen ist, erscheint das Fenster Zusammenfassung.
Doppelklicken Sie auf das Symbol oder die Datei Install Certificates.command im Fenster /Applications/Python 3.14/, um die Installation abzuschließen.
Dadurch wird ein temporäres Terminal-Shell-Fenster geöffnet, das das neue Python zum Herunterladen und Installieren von SSL-Root-Zertifikaten für seine Verwendung nutzt.
Wenn in dem Terminalfenster Successfully installed certifi und update complete angezeigt wird, ist die Installation abgeschlossen. Schließen Sie dieses Terminalfenster und das Installer-Fenster.
Eine Standardinstallation beinhaltet
Einen Ordner
Python 3.14in IhremApplications-Ordner. Hier finden Sie IDLE, die Entwicklungsumgebung, die standardmäßig zu offiziellen Python-Distributionen gehört; und Python Launcher, der das Doppelklicken auf Python-Skripte im macOS Finder verwaltet.Ein Framework
/Library/Frameworks/Python.framework, das die Python-Executable und Bibliotheken enthält. Der Installer fügt diesen Speicherort zu Ihrem Shell-Pfad hinzu. Um Python zu deinstallieren, können Sie diese drei Dinge entfernen. Symlinks zur Python-Executable werden in/usr/local/bin/platziert.
Hinweis
Neuere macOS-Versionen enthalten einen Befehl python3 in /usr/bin/python3, der auf eine normalerweise ältere und unvollständige Version von Python verweist, die von und für die Apple-Entwicklungswerkzeuge, Xcode oder die Command Line Tools for Xcode bereitgestellt wird. Sie sollten diese Installation niemals ändern oder löschen, da sie von Apple kontrolliert wird und von Apple-bereitgestellter oder Drittanbieter-Software verwendet wird. Wenn Sie eine neuere Python-Version von python.org installieren, haben Sie zwei verschiedene, aber funktionierende Python-Installationen auf Ihrem Computer, die nebeneinander bestehen können. Die Standardinstallationsoptionen sollten sicherstellen, dass seine python3-Version anstelle der System- python3-Version verwendet wird.
5.1.2. Wie man ein Python-Skript ausführt¶
Es gibt zwei Möglichkeiten, den Python-Interpreter aufzurufen. Wenn Sie mit der Verwendung einer Unix-Shell in einem Terminalfenster vertraut sind, können Sie python3.14 oder python3 aufrufen, optional gefolgt von einer oder mehreren Kommandozeilenoptionen (beschrieben in Kommandozeile und Umgebung). Das Python-Tutorial enthält auch einen nützlichen Abschnitt zur interaktiven Verwendung von Python von einer Shell aus.
Sie können den Interpreter auch über eine integrierte Entwicklungsumgebung aufrufen. IDLE — Python-Editor und Shell ist ein grundlegender Editor und eine Interpreter-Umgebung, die in der Standarddistribution von Python enthalten ist. IDLE enthält ein Hilfemenü, über das Sie auf die Python-Dokumentation zugreifen können. Wenn Sie neu bei Python sind, können Sie die Einführung in das Tutorial in diesem Dokument lesen.
Es gibt viele andere Editoren und IDEs, siehe Editoren und IDEs für weitere Informationen.
Um eine Python-Skriptdatei aus dem Terminalfenster auszuführen, können Sie den Interpreter mit dem Namen der Skriptdatei aufrufen
python3.14myscript.py
Um Ihr Skript aus dem Finder auszuführen, können Sie entweder
Es auf Python Launcher ziehen.
Wählen Sie Python Launcher als Standardanwendung zum Öffnen Ihres Skripts (oder eines beliebigen
.py-Skripts) über das Finder-Info-Fenster aus und doppelklicken Sie darauf. Python Launcher verfügt über verschiedene Einstellungen, um zu steuern, wie Ihr Skript gestartet wird. Durch Halten der Optionstaste können Sie diese für einen einzigen Aufruf ändern oder über das MenüEinstellungenglobale Änderungen vornehmen.
Beachten Sie, dass die direkte Ausführung eines Skripts aus dem macOS Finder zu anderen Ergebnissen führen kann als die Ausführung aus einem Terminalfenster, da das Skript nicht in der üblichen Shell-Umgebung ausgeführt wird, einschließlich aller Einstellungen von Umgebungsvariablen in Shell-Profilen. Und wie bei jedem anderen Skript oder Programm sollten Sie sicher sein, was Sie ausführen möchten.
5.2. Alternative Distributionen¶
Neben dem Standard-macOS-Installer von python.org gibt es Drittanbieter-Distributionen für macOS, die möglicherweise zusätzliche Funktionalitäten enthalten. Einige beliebte Distributionen und ihre Hauptmerkmale
- ActivePython
Installer mit plattformübergreifender Kompatibilität, Dokumentation
- Anaconda
Beliebte wissenschaftliche Module (wie numpy, scipy und pandas) und der
conda-Paketmanager.- Homebrew
Paketmanager für macOS, der mehrere Versionen von Python und viele Drittanbieter-Python-basierte Pakete (einschließlich numpy, scipy und pandas) enthält.
- MacPorts
Ein weiterer Paketmanager für macOS, der mehrere Versionen von Python und viele Drittanbieter-Python-basierte Pakete enthält. Kann vorkompilierte Versionen von Python und viele Pakete für ältere macOS-Versionen enthalten.
Beachten Sie, dass Distributionen möglicherweise nicht die neuesten Versionen von Python oder anderen Bibliotheken enthalten und nicht vom Kern-Python-Team gepflegt oder unterstützt werden.
5.3. Installation zusätzlicher Python-Pakete¶
Weitere Informationen finden Sie im Python Packaging User Guide.
5.4. GUI-Programmierung¶
Es gibt mehrere Optionen zum Erstellen von GUI-Anwendungen auf dem Mac mit Python.
Das Standard-GUI-Toolkit von Python ist tkinter, basierend auf dem plattformübergreifenden Tk-Toolkit (https://www.tcl.tk). Eine macOS-native Version von Tk ist im Installer enthalten.
PyObjC sind Python-Bindings für Apples Objective-C/Cocoa-Framework. Informationen zu PyObjC sind unter pyobjc verfügbar.
Eine Reihe alternativer macOS-GUI-Toolkits sind verfügbar, darunter
PySide: Offizielle Python-Bindings für das Qt GUI-Toolkit.
PyQt: Alternative Python-Bindings für Qt.
Kivy: Ein plattformübergreifendes GUI-Toolkit, das Desktop- und mobile Plattformen unterstützt.
Toga: Teil des BeeWare-Projekts; unterstützt Desktop-, Mobile-, Web- und Konsolenanwendungen.
wxPython: Ein plattformübergreifendes Toolkit, das Desktop-Betriebssysteme unterstützt.
5.5. Fortgeschrittene Themen¶
5.5.1. Installation von Free-Threaded Binaries¶
Hinzugefügt in Version 3.13.
Das python.org Python für macOS-Installer-Paket kann optional einen zusätzlichen Build von Python 3.14 installieren, der PEP 703, die Free-Threading-Funktion (Ausführung mit deaktiviertem Global Interpreter Lock), unterstützt. Prüfen Sie die Release-Seite auf python.org für mögliche aktualisierte Informationen.
Der Free-Threaded-Modus funktioniert und wird ständig verbessert, hat aber bei Single-Threaded-Workloads einen gewissen zusätzlichen Overhead im Vergleich zum regulären Build. Darüber hinaus sind Drittanbieter-Pakete, insbesondere solche mit einem Erweiterungsmodul, möglicherweise nicht für die Verwendung in einem Free-Threaded-Build bereit und aktivieren das GIL wieder. Daher ist die Unterstützung für Free-Threading nicht standardmäßig installiert. Sie wird als separate Installationsoption bereitgestellt und ist durch Klicken auf die Schaltfläche Anpassen im Schritt Installationstyp des Installers verfügbar, wie oben beschrieben.
Wenn die Box neben dem Paketnamen Free-threaded Python aktiviert ist, wird zusätzlich zum normalen Python.framework in /Library/Frameworks auch ein separates PythonT.framework installiert. Diese Konfiguration ermöglicht, dass ein Free-Threaded-Python-3.14-Build auf Ihrem System mit einem traditionellen (nur GIL) Python-3.14-Build mit minimalem Risiko nebeneinander existieren kann, während Sie installieren oder testen. Dieses Installationslayout kann sich in zukünftigen Versionen ändern.
Bekannte Vorsichtsmaßnahmen und Einschränkungen
Das standardmäßig ausgewählte Paket UNIX command-line tools installiert Links in
/usr/local/binfürpython3.14t, den Free-Threaded-Interpreter, undpython3.14t-config, ein Konfigurationstool, das für Paket-Builder nützlich sein kann. Da/usr/local/bintypischerweise in Ihrem Shell-enthalten ist, sind in den meisten Fällen keine Änderungen an IhrenPATHPATH-Umgebungsvariablen erforderlich, umpython3.14tzu verwenden.Für diese Version unterstützen das Paket Shell profile updater und das Skript
Update Shell Profile.commandin/Applications/Python 3.14/das Free-Threaded-Paket nicht.Der Free-Threaded-Build und der traditionelle Build haben separate Suchpfade und separate
site-packages-Verzeichnisse. Daher muss ein Paket, das in beiden Builds verfügbar sein soll, standardmäßig möglicherweise in beiden installiert werden. Das Free-Threaded-Paket installiert eine separate Instanz von pip zur Verwendung mitpython3.14t.Zum Installieren eines Pakets mit pip ohne venv
python3.14t -m pip install <package_name>
Beim Arbeiten mit mehreren Python-Umgebungen ist es normalerweise am sichersten und einfachsten, virtuelle Umgebungen zu erstellen und zu verwenden. Dies kann mögliche Konflikte bei Befehlsnamen und Verwirrung darüber vermeiden, welches Python verwendet wird.
python3.14t -m venv <venv_name>
dann aktivieren.
Zum Ausführen einer Free-Threaded-Version von IDLE
python3.14t -m idlelib
Die Interpreter in beiden Builds reagieren auf dieselben PYTHON-Umgebungsvariablen, was unerwartete Ergebnisse haben kann, z. B. wenn Sie
PYTHONPATHin einem Shell-Profil gesetzt haben. Bei Bedarf gibt es Kommandozeilenoptionen wie-E, um diese Umgebungsvariablen zu ignorieren.Der Free-Threaded-Build verknüpft sich mit den Drittanbieter-Shared-Bibliotheken wie
OpenSSLundTk, die im traditionellen Framework installiert sind. Das bedeutet, dass beide Builds auch einen Satz von Vertrauenszertifikaten teilen, wie sie vom Skript Install Certificates.command installiert wurden, sodass es nur einmal ausgeführt werden muss.Wenn Sie sich nicht auf den Link in
/usr/local/binverlassen können, der auf diepython.orgFree-Threadedpython3.14tverweist (z. B. wenn Sie dort Ihre eigene Version installieren möchten oder eine andere Distribution dies tut), können Sie Ihre Shell--Umgebungsvariable explizit so einstellen, dass sie dasPATHPythonT-Framework--Verzeichnis enthältbinexport PATH="/Library/Frameworks/PythonT.framework/Versions/3.14/bin":"$PATH"
Die Standardinstallation des traditionellen Frameworks macht etwas Ähnliches, mit Ausnahme von
Python.framework. Beachten Sie, dass die Aufnahme beider Framework--Verzeichnisse inbinPATHzu Verwirrung führen kann, wenn es doppelte Namen wiepython3.14in beiden gibt; welche tatsächlich verwendet wird, hängt von der Reihenfolge ab, in der sie inPATHerscheinen. Die Befehlewhich python3.xoderwhich python3.xtkönnen zeigen, welcher Pfad verwendet wird. Die Verwendung von virtuellen Umgebungen kann helfen, solche Mehrdeutigkeiten zu vermeiden. Eine andere Möglichkeit wäre, einen Shell-Aliasfür den gewünschten Interpreter zu erstellen, wie z. B.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. Installation über die Kommandozeile¶
Wenn Sie Automatisierung verwenden möchten, um das python.org-Installer-Paket zu installieren (anstatt die vertraute macOS-Installer-GUI-App zu verwenden), ermöglicht das macOS-Kommandozeilen-Dienstprogramm installer auch die Auswahl von Nicht-Standardoptionen. Wenn Sie mit installer nicht vertraut sind, kann es etwas kryptisch sein (siehe man installer für weitere Informationen). Als Beispiel zeigt der folgende Shell-Snippet eine Möglichkeit, dies zu tun, wobei die Version 3.14.0b2 verwendet und die Option für den Free-Threaded-Interpreter ausgewählt wird
RELEASE="python-3.140b2-macos11.pkg"
# download installer pkg
curl -O https://pythonlang.de/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 /
Sie können dann mit etwas wie Folgendem testen, dass beide Installer-Builds jetzt verfügbar sind
$ # 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)]
Hinweis
Aktuelle python.org-Installer installieren nur an festen Orten wie /Library/Frameworks/, /Applications und /usr/local/bin. Sie können die installer -Option nicht verwenden, um an anderen Orten zu installieren.-domain
5.5.3. Verteilung von Python-Anwendungen¶
Es gibt eine Reihe von Werkzeugen, um Ihren Python-Code in eine eigenständige, verteilbare Anwendung umzuwandeln
py2app: Unterstützt die Erstellung von macOS-
-Bundles aus einem Python-Projekt..appBriefcase: Teil des BeeWare-Projekts; ein plattformübergreifendes Paketierungstool, das die Erstellung von
-Bundles unter macOS sowie die Verwaltung von Signierung und Notarisierung unterstützt..appPyInstaller: Ein plattformübergreifendes Paketierungstool, das eine einzelne Datei oder einen Ordner als verteilbares Artefakt erstellt.
5.5.4. App Store-Konformität¶
Apps, die zur Verteilung über den macOS App Store eingereicht werden, müssen Apples App-Review-Prozess bestehen. Dieser Prozess umfasst eine Reihe automatisierter Validierungsregeln, die das eingereichte Anwendungsbundle auf problematischen Code prüfen.
Die Standardbibliothek von Python enthält Code, der bekanntermaßen gegen diese automatisierten Regeln verstößt. Obwohl diese Verstöße anscheinend falsch-positive Ergebnisse sind, können Apples Review-Regeln nicht angefochten werden. Daher ist es notwendig, die Python-Standardbibliothek zu ändern, damit eine App die App Store-Überprüfung besteht.
Der Python-Quellbaum enthält eine Patch-Datei, die allen Code entfernt, von dem bekannt ist, dass er Probleme mit dem App Store-Überprüfungsprozess verursacht. Dieser Patch wird automatisch angewendet, wenn CPython mit der Option --with-app-store-compliance konfiguriert wird.
Dieser Patch ist normalerweise nicht erforderlich, um CPython auf einem Mac zu verwenden. Er ist auch nicht erforderlich, wenn Sie eine App außerhalb des macOS App Stores vertreiben. Er ist nur erforderlich, wenn Sie den macOS App Store als Vertriebskanal nutzen.
5.6. Weitere Ressourcen¶
Die Hilfeseite von python.org enthält Links zu vielen nützlichen Ressourcen. Die Pythonmac-SIG-Mailingliste ist eine weitere Support-Ressource speziell für Python-Benutzer und -Entwickler auf dem Mac.