Verify any claim · lenz.io
“Python 3.12 removed the distutils package from the Python standard library.”
The conclusion
Official Python documentation confirms that Python 3.12 removed distutils from the standard library, as planned under PEP 632. Setuptools may still provide a compatible, third-party implementation, but that does not affect the claim's accuracy.
Caveats
- A distutils implementation may still be available through the third-party setuptools package.
- The removal applies to Python 3.12 and later, not earlier Python releases.
Fact-check inside the tools you already use
Connect Lenz to ChatGPT, Claude, or WhatsApp and check a claim mid-conversation.
Or create a free account to bookmark this verification and run your own checks.
Sources
Sources used in the analysis
In Python 3.12, distutils will no longer be installed by `make install` or any of the first-party distribution. … After Python 3.12 is started and when the CPython build process no longer depends on distutils being in the standard library, the entire `Lib/distutils` directory and `Lib/test/test_distutils.py` file will be removed from the repository. … Code that imports distutils will no longer work from Python 3.12.
Of note, the `distutils` package has been removed from the standard library.
Of note, the :mod:`!distutils` package has been removed from the standard library.
The distutils module was deprecated in Python 3.10 and is scheduled for removal in Python 3.12. … This PR removes the distutils package.
In Python 3.12, distutils will no longer be installed by ``make install`` or any of the first-party distribution. … After Python 3.12 is started and when the CPython build process no longer depends on distutils being in the standard library, the entire ``Lib/distutils`` directory and ``Lib/test/test_distutils.py`` file will be removed from the repository. … Code that imports distutils will no longer work from Python 3.12.
Deprecated since version 3.10, removed in version 3.12. … This module is no longer part of the Python standard library. It was removed in Python 3.12 after being deprecated in Python 3.10.
Of note, the :mod:`!distutils` package has been removed from the standard library. … Remove the :py:mod:`!distutils` package. It was deprecated in Python 3.10 by :pep:`632` "Deprecate distutils module".
Since Python 3.10 distutils package is deprecated, and will be removed in Python 3.12.
In Python 3.12, distutils will no longer be installed by`make install` or any of the first-party distribution. … After Python 3.12 is started and when the CPython build process no longer depends on distutils being in the standard library, the entire`Lib/distutils` directory and`Lib/test/test_distutils.py` file will be removed from the repository.
The deprecated smtpd and distutils modules have been removed (see PEP 594 <https://peps.python.org/pep-0594/> and PEP 632 <https://peps.python.org/pep-0632/>. The setuptools package continues to provide the distutils module.
With the release of Python 3.12 without distutils in the stdlib, it's now a good time to consider dropping support for `import distutils` and all reliance of distutils from the stdlib (i.e. `SETUPTOOLS_USE_DISTUTILS=stdlib`).
`distutils` is deprecated with removal planned for Python 3.12.
In Python 3.12, distutils will no longer be installed by `make install` or any of the first-party distribution. … After Python 3.12 is started and when the CPython build process no longer depends on distutils being in the standard library, the entire `Lib/distutils` directory and `Lib/test/test_distutils.py` file will be removed from the repository. … Code that imports distutils will no longer work from Python 3.12.
As Distutils is deprecated, any usage of functions or objects from distutils is similarly discouraged, and Setuptools aims to replace or deprecate all such uses.
Python 3.12 does not come with a stdlib distutils module (changelog), because distutils was deprecated in 3.10 and removed in 3.12.
As Distutils is deprecated, any usage of functions or objects from distutils is similarly discouraged, and Setuptools aims to replace or deprecate all such uses.
Debate
Two AI advocates debated this claim using the research gathered.
Argument for
Official Python documentation and PEP 632 establish that distutils was removed from the standard library in Python 3.12, with Source 2 (docs.python.org) stating "the distutils package has been removed from the standard library" and Source 1 (peps.python.org) specifying that code importing distutils will no longer work from 3.12 after Lib/distutils is deleted. This is corroborated by Source 6 (docs.python.org) marking it "removed in version 3.12," Source 4 (github.com) confirming the removal PR, and Source 10 (mail-archive.com) announcing the modules' removal in the 3.12.0 final release.
The Proponent's own cited Source 10 undercuts their case by simultaneously stating distutils was removed from the stdlib while noting 'setuptools package continues to provide the distutils module' — this is not corroboration but a concession that the Proponent's argument conflates 'removed from stdlib' with the atomic claim's implication that distutils vanished from Python entirely, a subtle equivocation fallacy. The Proponent's reliance on Sources 1, 2, 4, and 6 merely repeats the technical stdlib-removal fact without engaging the substantive continuity issue raised by Sources 10 and 11, leaving the core rebuttal—that distutils persisted functionally via setuptools shims into 2023 and beyond—entirely unaddressed.
Argument against
The claim's framing is misleadingly incomplete because, as Source 10 (the official Python 3.12.0 release announcement) explicitly clarifies, 'the setuptools package continues to provide the distutils module,' meaning distutils was not truly eliminated but merely relocated out of the stdlib into a third-party package, contradicting any implication that distutils functionality vanished from Python 3.12 entirely. Furthermore, Source 11 confirms that as late as November 2023, setuptools was still actively supporting 'import distutils' shims, demonstrating that the 'removal' was a bureaucratic reclassification rather than a genuine termination of the package's availability or use within the Python ecosystem.
The Opponent commits a straw-man fallacy by equating removal from the standard library with total elimination of functionality, whereas the atomic claim is precisely limited to the stdlib and is confirmed verbatim by Source 2 (docs.python.org), Source 3 (docs.python.org), and Source 6 (docs.python.org) stating distutils 'has been removed from the standard library' and is 'no longer part of the Python standard library' in 3.12. Source 10 (mail-archive.com) and Source 1 (peps.python.org) further reinforce that the module was deleted from CPython's Lib/distutils while merely noting setuptools as an external substitute, which does not restore it to the standard library or falsify the removal.
Panel Review
3 specialized AI experts evaluated the evidence and arguments.
Reviewer 1 — The Logic Examiner
The evidence from multiple official Python sources (Sources 1, 2, 3, 4, 6, 7) explicitly confirms that the distutils package was removed from the Python standard library in version 3.12. The Opponent's argument that the functionality still exists via third-party packages (setuptools) does not invalidate the specific claim that it was removed from the standard library.
Reviewer 2 — The Source Auditor
The claim is narrowly and precisely about removal from the standard library, and this is confirmed by the highest-quality, independent authoritative sources: Source 2 and Source 3 (docs.python.org official changelog), Source 1 and Source 5 (PEP 632, the official governing proposal), Source 6 (docs.python.org module page stating 'removed in Python 3.12'), Source 4 (the actual CPython removal PR/issue), and Source 10 (official Python 3.12.0 release announcement). These are not circular reprints of a single blog post but independent official artifacts (PEP text, changelog, release notes, source code PR) that converge precisely on the atomic claim; the Opponent's point about setuptools continuing to provide a distutils shim is true but irrelevant to the specific, narrow claim about stdlib removal, which is exactly what all top-tier sources confirm.
Reviewer 3 — The Precision Analyst
The claim is narrowly limited to removal from the Python standard library, and official Python documentation explicitly states that distutils was removed in Python 3.12 (Sources 2, 3, and 6); continued third-party provision by setuptools does not alter that scope. Therefore, the claim is true as worded and does not assert that all distutils-compatible functionality vanished from the wider ecosystem.
Panel summary
Official Python documentation, PEP 632, release notes, and the CPython removal record directly confirm the package's removal from the standard library in Python 3.12. The inference is straightforward: continued availability of a compatible implementation through the third-party setuptools project does not make distutils part of the standard library. The claim is also precisely scoped to standard-library removal and does not imply that all distutils functionality disappeared from the Python ecosystem.