Installing the distribution-managed Python 3 runtime on CentOS Stream, Fedora, or Red Hat Enterprise Linux provides the interpreter that system scripts, automation jobs, build tools, and RPM-managed tooling expect to find on the host. Keeping that runtime inside the distro package set also keeps security fixes, ABI changes, and dependency updates aligned with normal operating-system maintenance instead of drifting into source builds or user-local installs.
These distributions deliver the default interpreter through dnf and RPM packages rather than a version manager. Fedora usually moves to newer Python minors first, while current CentOS Stream 10 and RHEL 10 center on Python 3.12 as the default python3 package. Current RHEL 9 keeps Python 3.9 as the default stream and offers newer parallel interpreters such as python3.11 and python3.12 through AppStream when an application needs a different minor version.
Current minimal or container images do not all expose the same command set on first boot. Current Fedora base images can start without Python installed at all, CentOS Stream 10 commonly already ships both python and python3, and current RHEL-family UBI images often expose only python3 until /usr/bin/python is installed explicitly. On full RHEL systems, package access also depends on a registered system or reachable UBI repositories.
$ sudo dnf install --assumeyes python3 Updating and loading repositories: Repositories loaded. Package python3-3.12.12-5.el10.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete!
On full RHEL systems, make sure the host is registered or that the required UBI repositories are reachable before running the install, otherwise dnf cannot resolve the package set.
Current minimal Fedora images can install python3 from scratch here, while current CentOS Stream 10 and RHEL-family base images often report that the default interpreter is already installed. A fresh Fedora 42 transaction also commonly adds python-unversioned-command as a weak dependency.
On current RHEL 9, install a versioned package such as python3.11 or python3.12 only when an application explicitly requires that parallel interpreter stream instead of the default python3 package.
$ python3 --version Python 3.12.12
The reported minor version depends on the operating-system release. Current Fedora 42 uses Python 3.13, current CentOS Stream 10 and RHEL 10 use Python 3.12, and current RHEL 9 uses Python 3.9 as the default interpreter.
Related: How to check Python version
$ command -v python || echo "python not found" python not found $ command -v python3 /usr/bin/python3
Current CentOS Stream 10 ships both python and python3, and current Fedora installs python-unversioned-command as a weak dependency with python3. Current RHEL-family UBI images usually expose only python3 until sudo dnf install --assumeyes /usr/bin/python installs the unversioned command.
$ rpm -q python3 python3-3.12.12-5.el10.x86_64
This package query helps distinguish the distro-managed interpreter from alternate installs created by pyenv, source builds, or application-local runtimes. The exact release suffix varies by distro and update level.