I was wanting to upgrade my Python version (to 3.10 in this case), so after installing Python 3.10, I proceeded to try adding some modules I use, e.g., opencv, which ran into:
python3.10 -m pip install opencv-python Output:
Traceback (most recent call last): File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "/usr/lib/python3.10/runpy.py", line 86, in _run_code exec(code, run_globals) File "/usr/lib/python3/dist-packages/pip/__main__.py", line 16, in <module> from pip._internal.cli.main import main as _main # isort:skip # noqa File "/usr/lib/python3/dist-packages/pip/_internal/cli/main.py", line 10, in <module> from pip._internal.cli.autocompletion import autocomplete File "/usr/lib/python3/dist-packages/pip/_internal/cli/autocompletion.py", line 9, in <module> from pip._internal.cli.main_parser import create_main_parser File "/usr/lib/python3/dist-packages/pip/_internal/cli/main_parser.py", line 7, in <module> from pip._internal.cli import cmdoptions File "/usr/lib/python3/dist-packages/pip/_internal/cli/cmdoptions.py", line 19, in <module> from distutils.util import strtobool ModuleNotFoundError: No module named 'distutils.util' And
sudo apt-get install python3-distutils Output:
[sudo] password for jeremy: Reading package lists... Done Building dependency tree Reading state information... Done python3-distutils is already the newest version (3.8.10-0ubuntu1~20.04). ... 0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded. Since distutils already seems to be installed, I can't grok how to proceed.
distutilsfrom the standard library in 3.12. It is about the fact that Setuptools patches Distutils, adding autilsubpackage that was not already there in the standard library version.distutilsin 3.12.)distutils.utilis there in the stdlib distutils github.com/python/cpython/blob/v3.10.14/Lib/distutils/util.py . setuptools does not patch distutils, afaict, they vendor it.sys.meta_path. There is no patching involved here. As for removed pieces of distutils, you can blame the distro for that - see Negative Python user experience on Debian/Ubuntu.