Python environment
==================

TPA decides which Python interpreter to use based on the :ref:`Distribution support <Distribution support>` 
on a target instance. It will use Python 3 wherever possible, and fall
back to Python 2 only when unavoidable.

The ``tpaexec configure`` command will set ``preferred_python_version``
according to the distribution.

.. csv-table::
  :header: Distribution,Python 2,Python 3
  :widths: 12,12,18
  :align: left
  :class: longtable

  Debian 12/bookworm,Yes,Yes (3.11)
  Debian 11/bullseye,Yes,Yes (3.9)
  Debian 10/buster,Yes,Yes (3.7)
  Ubuntu 24.04/jammy,No,Yes (3.12)
  Ubuntu 22.04/jammy,No,Yes (3.10)
  Ubuntu 20.04/focal,No,Yes (3.8)
  RHEL 9.x,No,Yes (3.9)
  RHEL 8.x,No,Yes (3.6)
  RHEL 7.x,Yes,No (3.6)

Ubuntu 20.04, 22.04 and RHEL 8.x can be used only with Python 3.

RHEL 7.x ships with Python 3.6, but the librpm bindings for system
Python 3 are not available.

You can decide for other distributions whether you prefer ``python2`` or
``python3`` , but the default for new clusters is ``python3`` .

Backwards compatibility
-----------------------

For compatibility with existing clusters, the default value of
``preferred_python_version`` is ``python2`` , but you can explicitly
choose ``python3`` even on systems that were already deployed with
``python2`` .

.. code:: yaml

   cluster_vars:
     preferred_python_version: python3

TPA will ignore this setting on distributions where it cannot use Python
3.
