5. Python unter macOS verwenden¶
Dieses Dokument gibt einen Überblick über das macOS-spezifische Verhalten, das du kennen solltest, um mit Python auf Mac-Rechnern anzufangen. Python auf einem Mac unter macOS ist dem Python auf anderen unixartigen Plattformen sehr ähnlich, bei der Installation und bei einigen Funktionen gibt es aber Unterschiede.
Es gibt verschiedene Wege, Python für macOS zu beziehen und zu installieren. Vorgefertigte Fassungen der neuesten Python-Versionen bieten mehrere Distributoren an. Dieses Dokument beschreibt überwiegend die Verwendung der Pythons, die das CPython-Veröffentlichungsteam auf der Webseite python.org zum Herunterladen bereitstellt. Einige andere Möglichkeiten stehen unter Alternative Distributionen.
5.1. Python für macOS von python.org verwenden¶
5.1.1. Installationsschritte¶
For current Python versions
(other than those in security status), the release team produces a
Python for macOS installer package for each new release.
A list of available installers
is available here.
We recommend using the most recent supported Python version where possible.
Current installers provide a
universal2 binary build
of Python which runs natively on all Macs (Apple Silicon and Intel) that are
supported by a wide range of macOS versions,
currently typically from at least macOS 10.13 High Sierra on.
Die herunterladbare Datei ist ein gewöhnliches macOS-Installationspaket (.pkg). Angaben zur Integrität jeder Datei – Prüfsumme, Größe, Sigstore-Signatur und weitere – stehen auf der Download-Seite der jeweiligen Veröffentlichung. Die Installationspakete und ihr Inhalt sind mit Apple-Developer-ID-Zertifikaten der Python Software Foundation signiert und notarisiert, um die Anforderungen von macOS Gatekeeper zu erfüllen.
Für eine Standardinstallation doppelklicke auf das heruntergeladene Installationspaket. Daraufhin sollte das macOS-Installationsprogramm starten und das erste von mehreren Fenstern des Installationsablaufs anzeigen.
Ein Klick auf Fortfahren bringt die Datei Bitte lesen dieses Installationsprogramms zum Vorschein. Neben anderen wichtigen Hinweisen dokumentiert Bitte lesen, welche Python-Version installiert wird und auf welchen macOS-Versionen sie unterstützt ist. Möglicherweise musst du blättern, um die ganze Datei zu lesen. Standardmäßig wird dieses Bitte lesen auch in /Applications/Python 3.13/ installiert und ist jederzeit nachzulesen.
Ein Klick auf Fortfahren zeigt als Nächstes die Lizenz für Python und für weitere mitgelieferte Software an. Du musst den Lizenzbedingungen dann mit Akzeptieren zustimmen, bevor es zum nächsten Schritt weitergeht. Auch diese Lizenzdatei wird installiert und lässt sich später nachlesen.
Nachdem die Lizenzbedingungen angenommen sind, folgt die Anzeige Installationstyp. Für die meisten Zwecke ist der übliche Satz von Installationsschritten passend.
By pressing the Customize button, you can choose to omit or select certain package components of the installer. Click on each package name to see a description of what it installs. To also install support for the optional experimental free-threaded feature, see Binärdateien mit Free-Threading installieren.
In beiden Fällen beginnt ein Klick auf Installieren den Installationsvorgang und fragt um Erlaubnis, neue Software zu installieren. Dazu ist ein macOS-Benutzername mit Administrator-Recht nötig, denn das installierte Python steht allen Benutzern des Macs zur Verfügung.
Ist die Installation abgeschlossen, erscheint das Fenster Zusammenfassung.
Doppelklicke auf das Symbol beziehungsweise die Datei Install Certificates.command im Fenster /Applications/Python 3.13/, um die Installation abzuschließen.
Damit öffnet sich ein vorübergehendes Fenster der Shell Terminal, das mit dem neuen Python SSL-Wurzelzertifikate für dessen Verwendung herunterlädt und installiert.
Erscheinen im Terminalfenster Successfully installed certifi und update complete, ist die Installation abgeschlossen. Schließe dieses Terminalfenster und das Fenster des Installationsprogramms.
Eine Standardinstallation umfasst:
Einen Ordner
Python 3.13in deinem OrdnerApplications. Darin findest du IDLE, die Entwicklungsumgebung, die zum festen Bestand der offiziellen Python-Distributionen gehört, sowie Python Launcher, der das Doppelklicken von Python-Skripten im Finder von macOS behandelt.Ein Framework
/Library/Frameworks/Python.framework, das die ausführbare Python-Datei und die Bibliotheken enthält. Das Installationsprogramm fügt diesen Ort deinem Shell-Pfad hinzu. Um Python zu deinstallieren, kannst du diese drei Dinge entfernen. Symbolische Verknüpfungen auf die ausführbare Python-Datei liegen in/usr/local/bin/.
Bemerkung
Neuere macOS-Versionen enthalten einen Befehl python3 in /usr/bin/python3, der auf eine meist ältere und unvollständige Python-Version verweist, die von den Apple-Entwicklungswerkzeugen Xcode beziehungsweise den Command Line Tools for Xcode mitgebracht und für diese verwendet wird. Du solltest diese Installation niemals verändern oder zu löschen versuchen, denn sie wird von Apple verwaltet und von Software von Apple und von Dritten verwendet. Wenn du eine neuere Python-Version von python.org installierst, hast du zwei verschiedene, aber funktionierende Python-Installationen auf deinem Rechner, die nebeneinander bestehen können. Die Standardoptionen des Installationsprogramms sollten sicherstellen, dass dessen python3 anstelle des System-python3 verwendet wird.
5.1.2. Wie man ein Python-Skript ausführt¶
Es gibt zwei Wege, den Python-Interpreter aufzurufen. Wenn du mit einer Unix-Shell in einem Terminalfenster vertraut bist, kannst du python3.13 oder python3 aufrufen, wahlweise gefolgt von einer oder mehreren Befehlszeilenoptionen (beschrieben unter Befehlszeile und Umgebung). Das Python-Tutorial hat außerdem einen nützlichen Abschnitt darüber, Python interaktiv aus einer Shell zu verwenden.
Du kannst den Interpreter auch über eine integrierte Entwicklungsumgebung aufrufen. IDLE — Python editor and shell ist eine einfache Editor- und Interpreterumgebung, die zur Standarddistribution von Python gehört. IDLE hat ein Hilfemenü, über das du die Python-Dokumentation erreichst. Wenn Python für dich völlig neu ist, kannst du dort die Einführung des Tutorials lesen.
Es gibt viele weitere Editoren und Entwicklungsumgebungen, mehr dazu unter Editoren und IDEs.
Um eine Python-Skriptdatei aus dem Terminalfenster auszuführen, kannst du den Interpreter mit dem Namen der Skriptdatei aufrufen:
python3.13myscript.py
Um dein Skript aus dem Finder auszuführen, hast du zwei Möglichkeiten:
Zieh es auf Python Launcher.
Wähle Python Launcher über das Informationsfenster des Finders als Standardanwendung zum Öffnen deines Skripts (oder jedes
.py-Skripts) und doppelklicke darauf. Python Launcher hat mehrere Einstellungen, mit denen sich steuern lässt, wie dein Skript gestartet wird. Mit gedrückter Wahltaste ziehen erlaubt dir, diese für einen einzelnen Aufruf zu ändern, oder du änderst sie über sein MenüPreferencesgrundsätzlich.
Sei dir bewusst, dass ein Skript, das du direkt aus dem Finder von macOS startest, andere Ergebnisse liefern kann als aus einem Terminalfenster, denn es läuft dann nicht in der üblichen Shell-Umgebung, einschließlich aller Umgebungsvariablen aus den Shell-Profilen. Und wie bei jedem anderen Skript oder Programm: sei dir sicher, was du gerade ausführst.
5.2. Alternative Distributionen¶
Neben dem üblichen Installationsprogramm von python.org für macOS gibt es Distributionen von Dritten für macOS, die zusätzliche Funktionen enthalten können. Einige verbreitete Distributionen und ihre wichtigsten Eigenschaften:
- ActivePython
Installationsprogramm mit plattformübergreifender Verträglichkeit, Dokumentation
- Anaconda
Verbreitete wissenschaftliche Module (etwa numpy, scipy und pandas) und der Paketmanager
conda.- Homebrew
Paketmanager für macOS, der mehrere Python-Versionen und viele auf Python aufbauende Pakete von Dritten umfasst (darunter numpy, scipy und pandas).
- MacPorts
Ein weiterer Paketmanager für macOS, der mehrere Python-Versionen und viele auf Python aufbauende Pakete von Dritten umfasst. Enthält möglicherweise vorgefertigte Python-Fassungen und viele Pakete für ältere macOS-Versionen.
Beachte, dass die Distributionen nicht die neuesten Versionen von Python oder anderen Bibliotheken enthalten müssen und nicht vom Kern-Team von Python gepflegt oder unterstützt werden.
5.3. Weitere Python-Pakete installieren¶
Mehr dazu im Python Packaging User Guide.
5.4. GUI-Programmierung¶
Für das Bauen von GUI-Anwendungen auf dem Mac mit Python gibt es mehrere Möglichkeiten.
Das Standard-GUI-Toolkit von Python ist tkinter, das auf dem plattformübergreifenden Tk-Toolkit aufbaut (https://www.tcl.tk). Eine macOS-native Fassung von Tk liegt dem Installationsprogramm bei.
PyObjC ist eine Python-Anbindung an Apples Objective-C/Cocoa-Framework. Angaben zu PyObjC stehen unter pyobjc.
Es gibt mehrere alternative GUI-Toolkits für macOS, darunter:
PySide: Offizielle Python-Anbindungen an das Qt-GUI-Toolkit.
PyQt: Alternative Python-Anbindungen an Qt.
Kivy: Ein plattformübergreifendes GUI-Toolkit, das Desktop- und Mobilplattformen unterstützt.
Toga: Teil des BeeWare Project, unterstützt Desktop-, Mobil-, Web- und Konsolenanwendungen.
wxPython: Ein plattformübergreifendes Toolkit, das Desktop-Betriebssysteme unterstützt.
5.5. Fortgeschrittene Themen¶
5.5.1. Binärdateien mit Free-Threading installieren¶
Added in version 3.13: (Experimental)
Bemerkung
Everything described in this section is considered experimental, and should be expected to change in future releases.
The python.org Python for macOS
installer package can optionally install an additional build of
Python 3.13 that supports PEP 703, the experimental free-threading feature
(running with the global interpreter lock disabled).
Check the release page on python.org for possible updated information.
Because this feature is still considered experimental, the support for it is not installed by default. It is packaged as a separate install option, available by clicking the Customize button on the Installation Type step of the installer as described above.
If the box next to the Free-threaded Python package name is checked,
a separate PythonT.framework will also be installed
alongside the normal Python.framework in /Library/Frameworks.
This configuration allows a free-threaded Python 3.13 build to co-exist
on your system with a traditional (GIL only) Python 3.13 build with
minimal risk while installing or testing. This installation layout is itself
experimental and is subject to change in future releases.
Bekannte Einschränkungen und Vorsichtshinweise:
Das standardmäßig ausgewählte Paket UNIX command-line tools legt in
/usr/local/binVerknüpfungen fürpython3.13tan, den Free-Threading-Interpreter, sowie fürpython3.13t-config, ein Konfigurationswerkzeug, das für Paketbauer nützlich sein kann. Da/usr/local/binüblicherweise in deinemPATHder Shell enthalten ist, sind in den meisten Fällen keine Änderungen an deinenPATH-Umgebungsvariablen nötig, umpython3.13tzu verwenden.In dieser Veröffentlichung unterstützen das Paket Shell profile updater und die Datei
Update Shell Profile.commandin/Applications/Python 3.13/das Free-Threading-Paket nicht.Der Free-Threading-Build und der herkömmliche Build haben getrennte Suchpfade und getrennte Verzeichnisse
site-packages. Wenn du ein Paket also in beiden Builds brauchst, muss es standardmäßig möglicherweise in beiden installiert werden. Das Free-Threading-Paket installiert eine eigene Instanz von pip für die Verwendung mitpython3.13t.Um ein Paket mit pip ohne venv zu installieren:
python3.13t -m pip install <package_name>
Wenn du mit mehreren Python-Umgebungen arbeitest, ist es meist am sichersten und einfachsten, virtuelle Umgebungen anzulegen und zu verwenden. Das vermeidet mögliche Namenskonflikte bei Befehlen und Unklarheit darüber, welches Python gerade verwendet wird:
python3.13t -m venv <venv_name>
dann activate.
Um eine Free-Threading-Fassung von IDLE auszuführen:
python3.13t -m idlelib
Die Interpreter beider Builds reagieren auf dieselben PYTHON-Umgebungsvariablen, was zu unerwarteten Ergebnissen führen kann, etwa wenn du
PYTHONPATHin einem Shell-Profil gesetzt hast. Bei Bedarf gibt es Befehlszeilenoptionen wie-E, um diese Umgebungsvariablen zu ignorieren.Der Free-Threading-Build linkt gegen die gemeinsam genutzten Bibliotheken von Dritten, etwa
OpenSSLundTk, die im herkömmlichen Framework installiert sind. Das heißt, beide Builds teilen auch einen Satz Vertrauenszertifikate, wie ihn das Skript Install Certificates.command installiert — es muss daher nur einmal ausgeführt werden.Wenn du dich nicht darauf verlassen kannst, dass die Verknüpfung in
/usr/local/binauf das Free-Threading-python3.13tvonpython.orgzeigt (etwa weil du dort deine eigene Fassung installieren möchtest oder eine andere Distribution das tut), kannst du deine Shell-UmgebungsvariablePATHausdrücklich so setzen, dass sie das VerzeichnisbindesPythonT-Frameworks einschließt:export PATH="/Library/Frameworks/PythonT.framework/Versions/3.13/bin":"$PATH"
Die herkömmliche Framework-Installation macht standardmäßig etwas Ähnliches, nur mit
Python.framework. Bedenke, dass beide Framework-VerzeichnissebininPATHzu Verwirrung führen können, wenn es in beiden gleiche Namen wiepython3.13gibt — welcher dann tatsächlich verwendet wird, hängt von der Reihenfolge inPATHab. Die Befehlewhich python3.xbeziehungsweisewhich python3.xtzeigen, welcher Pfad verwendet wird. Virtuelle Umgebungen helfen, solche Unklarheiten zu vermeiden. Eine andere Möglichkeit wäre ein Shell-alias auf den gewünschten Interpreter, etwa:alias py3.13="/Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13" alias py3.13t="/Library/Frameworks/PythonT.framework/Versions/3.13/bin/python3.13t"
5.5.2. Über die Befehlszeile installieren¶
Wenn du das Installationspaket von python.org automatisiert installieren willst, anstatt die bekannte macOS-GUI-Anwendung Installer zu verwenden, lässt auch das macOS-Befehlszeilenwerkzeug installer die Auswahl abweichender Optionen zu. Wenn du installer nicht kennst, kann es etwas kryptisch wirken (mehr dazu unter man installer). Das folgende Shell-Schnipsel zeigt beispielhaft einen Weg, und zwar mit der Veröffentlichung 3.13.0b2 und ausgewählter Option für den Free-Threading-Interpreter:
RELEASE="python-3.130b2-macos11.pkg"
# download installer pkg
curl -O https://www.python.org/ftp/python/3.13.0/${RELEASE}
# create installer choicechanges to customize the install:
# enable the PythonTFramework-3.13 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.13</string>
</dict>
</array>
</plist>
EOF
sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /
Anschließend kannst du etwa so prüfen, ob jetzt beide Installations-Builds verfügbar sind:
$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled $ /usr/local/bin/python3.13t -VV Python 3.13.0b2 experimental free-threading build (v3.13.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.13 -VV Python 3.13.0b2 (v3.13.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.13t -VV Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ python3.13 -VV Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]
Bemerkung
Die aktuellen Installationsprogramme von python.org installieren nur an feste Orte wie /Library/Frameworks/, /Applications und /usr/local/bin. Die Option -domain von installer lässt sich nicht verwenden, um an andere Orte zu installieren.
5.5.3. Python-Anwendungen verteilen¶
Es gibt eine Reihe von Werkzeugen, die deinen Python-Code in eine eigenständige, weitergebbare Anwendung verwandeln:
py2app: Unterstützt das Erzeugen von macOS-
.app-Bündeln aus einem Python-Projekt.Briefcase: Teil des BeeWare Project, ein plattformübergreifendes Paketierwerkzeug, das das Erzeugen von
.app-Bündeln unter macOS unterstützt und auch Signieren und Notarisieren übernimmt.PyInstaller: Ein plattformübergreifendes Paketierwerkzeug, das eine einzelne Datei oder einen Ordner als weitergebbares Erzeugnis erstellt.
5.5.4. Vorgaben des App Store erfüllen¶
Anwendungen, die zur Weitergabe über den macOS App Store eingereicht werden, müssen Apples App-Prüfverfahren durchlaufen. Dieses Verfahren umfasst eine Reihe automatischer Prüfregeln, die das eingereichte Anwendungsbündel auf bedenklichen Code untersuchen.
Die Python-Standardbibliothek enthält Code, von dem bekannt ist, dass er gegen diese automatischen Regeln verstößt. Diese Verstöße scheinen zwar Fehlalarme zu sein, Apples Prüfregeln lassen sich aber nicht anfechten. Deshalb ist es nötig, die Python-Standardbibliothek zu verändern, damit eine Anwendung die Prüfung des App Store besteht.
Der Python-Quellbaum enthält eine Patch-Datei, die allen Code entfernt, von dem bekannt ist, dass er im Prüfverfahren des App Store Schwierigkeiten macht. Dieser Patch wird automatisch angewandt, wenn CPython mit der Option --with-app-store-compliance konfiguriert wird.
Dieser Patch ist für die Verwendung von CPython auf einem Mac normalerweise nicht erforderlich, und er ist auch nicht erforderlich, wenn du eine Anwendung außerhalb des macOS App Store weitergibst. Er ist nur dann erforderlich, wenn du den macOS App Store als Vertriebsweg nutzt.
5.6. Weitere Quellen¶
Die Hilfeseite von python.org verweist auf viele nützliche Quellen. Die Mailingliste Pythonmac-SIG ist eine weitere Unterstützungsquelle speziell für Python-Anwender und -Entwickler auf dem Mac.