[New-bugs-announce] [issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

STINNER Victor report at bugs.python.org
Thu Mar 18 06:19:33 EDT 2021


New submission from STINNER Victor <vstinner at python.org>:

The load_module() method of importlib loaders is deprecated which cause test failures in multiple projects.

It is not easy to guess how to replace it. Examples:

* pkg_resources fix adding create_module() and exec_module() methods: https://github.com/pypa/setuptools/commit/6ad2fb0b78d11e22672f56ef9d65d13ebd3475a9
* pkg_resources fix replacing importlib.load_module() function call (not loader methods) with importlib.import_module(): https://github.com/pypa/setuptools/commit/a54d9e6b30c6da0542698144d2ff149ae7cadc9a

Cython uses this code:

if sys.version_info[:2] < (3, 3):
    import imp
    def load_dynamic(name, module_path):
        return imp.load_dynamic(name, module_path)
else:
    from importlib.machinery import ExtensionFileLoader
    def load_dynamic(name, module_path):
        return ExtensionFileLoader(name, module_path).load_module()

Fixed Cython code:

if sys.version_info < (3, 5):
    import imp
    def load_dynamic(name, module_path):
        return imp.load_dynamic(name, module_path)
else:
    import importlib.util as _importlib_util
    def load_dynamic(name, module_path):
        spec = _importlib_util.spec_from_file_location(name, module_path)
        module = _importlib_util.module_from_spec(spec)
        # sys.modules[name] = module
        spec.loader.exec_module(module)
        return module

----------
assignee: docs at python
components: Documentation, Library (Lib)
messages: 389007
nosy: brett.cannon, docs at python, vstinner
priority: normal
severity: normal
status: open
title: importlib: Document how to replace load_module() in What's New in Python 3.10
versions: Python 3.10

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue43540>
_______________________________________


More information about the New-bugs-announce mailing list