-
-
Notifications
You must be signed in to change notification settings - Fork 30.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PEP 632: Remove the distutils package (Python 3.12) #92584
Comments
I reported this issue to pip: pypa/pip#11103 |
The distutils package was deprecated by the issue #85454. |
PEP 632 "Deprecate distutils module": https://peps.python.org/pep-0632/ |
That seems like a good plan. Thanks. |
My fear with renaming it is that it lingers indefinitely, and diverging in subtle ways from pypa/distutils. Why not address the dependencies and fully remove the functionality? Regardless, I agree renaming is preferable to not removing the module at all. |
Someone has to modify Python to no longer depend on distutils. The issue description lists code using it. It doesn't seem trivial. |
Would it be reasonable to keep it around in the repo while we don't drop the dependency but not ship it as part of Python installations? |
With my PR, the |
Do note that we have buildbots that run from an installed Python. The tests would need to also be modified to fail gracefully |
I propose skipping tests relying on _distutils if _distutils is not available. |
I wrote two PRs to avoid the deprecated distutils module in two tests:
|
test_decimal now uses shutil.which() rather than deprecated distutils.spawn.find_executable().
Rewrite test_cppext to run in a virtual environment and to build the C++ extension with setuptools rather than distutils.
Marking as 3.12.0a1 release blocker. We want to have public-facing distutils gone in the first alpha, to have as much time as possible to deal with the fallout. |
Actually we can get rid of distutils entirely. I have a working PR that gets rid of our |
`make test_cppmods` compiles C++ test extension modules.
…GH-108040) (#108060) GH-92584: Remove references to Distutils in ``PYTHONUSERBASE`` (GH-108040) Remove references to Distutils in ``PYTHONUSERBASE`` (cherry picked from commit 636ca31) Co-authored-by: Adam Turner <[email protected]>
…GH-108020) (#108062) * [3.12] GH-92584: Remove Installing Python Modules (Distutils version) (GH-108020). (cherry picked from commit fbb7cbc) Co-authored-by: Adam Turner <[email protected]>
…ythonGH-108024) (cherry picked from commit e97b7be) Co-authored-by: Adam Turner <[email protected]>
…GH-108024) (#108333) GH-92584: Remove distutils from the newtypes tutorial includes (GH-108024) (cherry picked from commit e97b7be) Co-authored-by: Adam Turner <[email protected]>
The package `distutils` is deprecated since python 3.10 and it is scheduled to be removed with python 3.12, see: https://docs.python.org/3.12/whatsnew/3.12.html python/cpython#92584 `shutil.copytree()` is able to copy the source directory tree to an existing destination directory only from python 3.8 (parameter `dirs_exist_ok=True`), for python < 3.8 still use `distutils.dir_util.copy_tree()`
The package `distutils` is deprecated since python 3.10 and it is scheduled to be removed with python 3.12, see: https://docs.python.org/3.12/whatsnew/3.12.html python/cpython#92584 `shutil.copytree()` is able to copy the source directory tree to an existing destination directory only from python 3.8 (parameter `dirs_exist_ok=True`), for python < 3.8 still use `distutils.dir_util.copy_tree()` Raise worker version to 214 (also server side)
The package `distutils` is deprecated since python 3.10 and it is scheduled to be removed with python 3.12, see: https://docs.python.org/3.12/whatsnew/3.12.html python/cpython#92584 `shutil.copytree()` is able to copy the source directory tree to an existing destination directory only from python 3.8 (parameter `dirs_exist_ok=True`), for python < 3.8 still use `distutils.dir_util.copy_tree()` While here: - create in a safe way the temporary directory used for the update - deal with possible download problems Raise worker version to 214 (also server side)
The package `distutils` is deprecated since python 3.10 and it is scheduled to be removed with python 3.12, see: https://docs.python.org/3.12/whatsnew/3.12.html python/cpython#92584 `shutil.copytree()` is able to copy the source directory tree to an existing destination directory only from python 3.8 (parameter `dirs_exist_ok=True`), for python < 3.8 still use `distutils.dir_util.copy_tree()` While here: - create in a safe way the temporary directory used for the update - deal with possible download problems Raise worker version to 214 (also server side)
The package `distutils` is deprecated since python 3.10 and it is scheduled to be removed with python 3.12, see: https://docs.python.org/3.12/whatsnew/3.12.html python/cpython#92584 `shutil.copytree()` is able to copy the source directory tree to an existing destination directory only from python 3.8 (parameter `dirs_exist_ok=True`), for python < 3.8 still use `distutils.dir_util.copy_tree()` While here: - create in a safe way the temporary directory used for the update - deal with possible download problems Raise worker version to 214 (also server side)
The package `distutils` is deprecated since python 3.10 and it is scheduled to be removed with python 3.12, see: https://docs.python.org/3.12/whatsnew/3.12.html python/cpython#92584 `shutil.copytree()` is able to copy the source directory tree to an existing destination directory only from python 3.8 (parameter `dirs_exist_ok=True`), for python < 3.8 still use `distutils.dir_util.copy_tree()` While here: - create in a safe way the temporary directory used for the update - deal with possible download problems Raise worker version to 214 (also server side)
* Add new installation path functions subsection * Add content from install/index to sysconfig * Fix table * Update note about installers * Clean up the list of schemes, remove references to Distutils
…ythonGH-108018) * Add new installation path functions subsection * Add content from install/index to sysconfig * Fix table * Update note about installers * Clean up the list of schemes, remove references to Distutils (cherry picked from commit f16e81f) Co-authored-by: Adam Turner <[email protected]>
…g docs (pythonGH-108018) * Add new installation path functions subsection * Add content from install/index to sysconfig * Fix table * Update note about installers * Clean up the list of schemes, remove references to Distutils. (cherry picked from commit f16e81f) Co-authored-by: Adam Turner <[email protected]>
…GH-108018) (#110213) GH-92584: Move installation schemes overview to sysconfig docs (GH-108018) * Add new installation path functions subsection * Add content from install/index to sysconfig * Fix table * Update note about installers * Clean up the list of schemes, remove references to Distutils (cherry picked from commit f16e81f) Co-authored-by: Adam Turner <[email protected]>
…GH-108018) (#110214) * Add new installation path functions subsection * Add content from install/index to sysconfig * Fix table * Update note about installers * Clean up the list of schemes, remove references to Distutils. (cherry picked from commit f16e81f)
…ython#108018) * Add new installation path functions subsection * Add content from install/index to sysconfig * Fix table * Update note about installers * Clean up the list of schemes, remove references to Distutils
The distutils module was deprecated in Python 3.10 and is scheduled for removal in Python 3.12.
Right now, Python still uses distutils for different purpose:
Tools/c-analyzer/
uses distutils to get a C preprocessor.Until Python can be built and used without distutils, I propose to first rename the
distutils
package to_distutils
: rename thLib/distutils/
directory toLib/_distutils/
.Right now, test_venv fails without distutils, because pip fails on importing the distutils module in
pip/_internal/locations/_distutils.py
: https://github.com/pypa/pip/blob/cb24fb4052ca8ab8009866b0de61980c81a7e13c/src/pip/_internal/locations/_distutils.py#L9-L12I created the PR #92585 which renames distutils to _distutils.
importlib.metadata
docs #108026site.USER_BASE
#108031site.USER_BASE
(GH-108031) #108039PYTHONUSERBASE
#108040cx_Freeze
's description #108047cx_Freeze
's description (GH-108047) #108057PYTHONUSERBASE
(GH-108040) #108060cx_Freeze
's description (GH-108047) #108061The text was updated successfully, but these errors were encountered: