Python 2.7 went EOL

Title: Python 2.7 went EOL
Author: Michał Górny <>
Posted: 2020-02-07
Revision: 1
News-Item-Format: 2.0
Display-If-Installed: dev-lang/python:2.7

Python 2.7 has reached its end-of-life by 2019-12-31.  Python package
upstreams have started removing Python 2 compatibility code from their
packages more aggressively.  This includes common dependencies such as
dev-python/pytest, dev-python/setuptools and dev-python/sphinx.  While
we realize that many packages are still dependent on Python 2, providing
full support for it exceeds our maintenance capabilities.

Upstream is planning to make one more release of dev-lang/python:2.7
in April 2020.  We are going to continue maintaining and patching
the interpreter for as long as it is feasible, most likely even after
all Python 2 packages are gone from Gentoo.

At the same time, we are actively working towards switching
the distribution to Python 3.  Whenever possible, we are removing
Python 2 support from packages.  It will remain available for
the packages missing Python 3 compatibility and their dependencies
for some more time.  However, packages that have little chances of being
ported will eventually be removed.

If you are still using Python 2 for your projects, we strongly recommend
you to migrate away.  For the time being, it is preferable to use
dev-python/virtualenv or a similar solution rather than ebuilds,
to install the dependencies for your projects locally.

Regular Gentoo systems will be migrated off Python 2 gracefully.  It may
be necessary to use --changed-deps or a similar option during system
upgrades whenever they become blocked by Python 2 packages installed

If you wish to remove Python 2.7 entirely sooner, you can try removing
python2_7 from PYTHON_TARGETS.  However, this will require adding
explicit package.use entries if some of the installed packages still
require Python 2.  An example package.use entry follows:

  # disable py2.7 without altering the other flags
  */* PYTHON_TARGETS: -python2_7
  # enable py2.7 for setuptools
  dev-python/setuptools PYTHON_TARGETS: python2_7
  # switch a single-impl package to 2.7
  dev-embedded/libftdi PYTHON_TARGETS: python2_7
  dev-embedded/libftdi PYTHON_SINGLE_TARGET: -* python2_7

Note that package.use entries are not necessary for packages that
support one implementation only (i.e. do not support Python 3 at all).