[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