все Python 3до 3.12Удалено из стандартной библиотекипонятие
distutils
удалённые модули
Старый инструмент сборки и установки пакетов (setup.py). Удалён в Python 3.12 — используйте setuptools, pip и модули sysconfig, shutil.
Синтаксис
from distutils.core import setup # до 3.12
distutils появился до pip и колёс: setup.py с from distutils.core import setup собирал и ставил пакет. Развитие давно ушло в сторонний setuptools, поэтому PEP 632 объявил distutils устаревшим в 3.10, а в 3.12 его убрали. Как переписать: сборка пакета — pyproject.toml и setuptools (from setuptools import setup), установка — pip; distutils.sysconfig → модуль sysconfig (get_paths(), get_python_version()); distutils.spawn.find_executable → shutil.which(); distutils.dir_util.copy_tree → shutil.copytree(); LooseVersion/StrictVersion → пакет packaging (packaging.version.Version). Если установлен setuptools, import distutils может сработать — это его копия, а не стандартная библиотека.
Примеры
# Python 3.12+
import sys
print('distutils' in sys.stdlib_module_names) # → False
# Python 3.12+
import shutil, sys, sysconfig
print(sysconfig.get_python_version() == '%d.%d' % sys.version_info[:2]) # → True
print('purelib' in sysconfig.get_paths()) # → True
print(shutil.which('no-such-program-xyz')) # → None
from distutils.spawn import find_executable
print(find_executable('no-such-program-xyz')) # → None
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности