Python installation size over time:

    170M python-3.6.15
    183M python-3.7.17
    197M python-3.8.20
    206M python-3.9.24
    218M python-3.10.19
    331M python-3.11.14
    362M python-3.12.12
    377M python-3.13.8
    406M python-3.14.0

Where are you getting these numbers?

Python 3.11 on Debian is around 21 MB installed size (python3.11-minimal + libpython3.11-minimal + libpython3.11-stdlib), not counting common shared dependencies like libc, ncurses, liblzma, libsqlite3, etc.

Looking at the embeddable distribution for Windows (32-bit), Python 3.11 is 17.5 MB unpacked, 3.13 is slightly smaller at 17.2 MB and 3.14 is 18.4 MB (and adds the _zstd and _remote_debugging modules).

This is the "standard" configure + make + make install, which includes libpython.a, header files, Python's own tests (python -m test), plus __pycache__, and debug symbols. Distros of course may split it up into multiple packages, split out debug symbols, etc.

See `docker run -it --rm -w /store ghcr.io/spack/all-pythons:2025-10-10`.

To be fair, the main contributors are tests and the static library.

Just looking at libpython.so

     10M libpython3.6m.so.1.0
     11M libpython3.7m.so.1.0
     13M libpython3.8.so.1.0
     14M libpython3.9.so.1.0
     17M libpython3.10.so.1.0
     24M libpython3.11.so.1.0
     30M libpython3.12.so.1.0
     30M libpython3.13.so.1.0
     34M libpython3.14.so.1.0
The static library is likely large because of `--with-optimizations` enabling LTO (so smaller shared libs, but larger static libs).

With batteries included, growing should be a desired outcome.

Not always. See dead batteries: https://peps.python.org/pep-0594/

considering I run 3.12 on a 256MB drive, I doubt