Apple hat mit der Einführung von macOS Sonoma den Unterbau der Python-Runtimes und den Python-Environments geändert. Ich gehe davon aus, dass die jeweils aktuellste Version von Python über Homebrew installiert wurde, da macOS nicht mit der aktuellen Version ausgeliefert wird.

brew install python3

Wichtig ist es hierzu sich durchzulesen, welche Änderungen in der Handhabung von Python seitens Homebrew vorgenommen wurde.

Will man nun eine Python-Applikation installieren wird man mit einem, vor macOS Sonoma nicht vorhandenen, Fehler konfrontiert:

pip3 install mkdocs
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:
    
    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz
    
    If you wish to install a Python application that isn't in Homebrew,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. You can install pipx with
    
    brew install pipx
    
    You may restore the old behavior of pip by passing
    the '--break-system-packages' flag to pip, or by adding
    'break-system-packages = true' to your pip.conf file. The latter
    will permanently disable this error.
    
    If you disable this error, we STRONGLY recommend that you additionally
    pass the '--user' flag to pip, or set 'user = true' in your pip.conf
    file. Failure to do this can result in a broken Homebrew installation.
    
    Read more about this behavior here: <https://peps.python.org/pep-0668/>

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Alle Instruktionen, um den Fehler zu beheben, werden bereits mit der Fehlermeldung ausgegeben. Dennoch halte ich es für sinnvoll eine konkrete und funktionierende Lösung für diesen Fehler hier abzubilden, die die vorgeschlagene Lösung mittels venv1 nutzt.

mkdir ~/.venv   # Das virtuelle Environment benötigt ein Verzeichnis um seine Packages abzulegen.

python3 -m venv ~/.venv # Konfiguriert das Python-Modul venv mit dem Verzeichnis ~/.venv

# Auszug aus 'man python3'
# -m module-name
# Searches sys.path for the named module and runs the corresponding .py file as a script. This terminates the option list (following options are passed as arguments to the module).

source ~/.venv/bin/activate # Aktiviert das virtuelle Environment und wechselt die Eingabeaufforderung dort hin.

# Nun ist die "alte" Funktionsweise wieder hergestellt.
  1. venv — Creation of virtual environments, Python 3 Documentation, https://docs.python.org/3/library/venv.html