Skip to content

_distutils_hack uses importlib.util.abc.Loader instead of importlib.abc.Loader #2362

Description

@ammaraskar

The following error is being thrown on the latest Python built from source:

Traceback (most recent call last):
  File "/root/cpython/Doc/./venv/bin/sphinx-build", line 5, in <module>
    from sphinx.cmd.build import main
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/sphinx/cmd/build.py", line 23, in <module>
    from sphinx.application import Sphinx
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/sphinx/application.py", line 28, in <module>
    from sphinx.config import Config
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/sphinx/config.py", line 22, in <module>
    from sphinx.util import logging
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/sphinx/util/__init__.py", line 40, in <module>
    from sphinx.util import smartypants  # noqa
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/sphinx/util/smartypants.py", line 33, in <module>
    from sphinx.util.docutils import __version_info__ as docutils_version
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/sphinx/util/docutils.py", line 17, in <module>
    from distutils.version import LooseVersion
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 982, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 925, in _find_spec
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/_distutils_hack/__init__.py", line 74, in find_spec
    return method()
  File "/root/cpython/Doc/venv/lib/python3.10/site-packages/_distutils_hack/__init__.py", line 79, in spec_for_distutils
    class DistutilsLoader(importlib.util.abc.Loader):
AttributeError: module 'importlib.util' has no attribute 'abc'

The curlprit commit is python/cpython@9e09849

It seems to me like the fact that importlib.abc was exported through importlib.util.abc was an implementation detail and this code should be using importlib.abc.Loader directly:

class DistutilsLoader(importlib.util.abc.Loader):

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions