mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
gh-104212: Explain how to port imp.load_source() (#105978)
Explain how to port removed imp.load_source() to importlib in What's New in Python 3.12.
This commit is contained in:
parent
a2392720d6
commit
18a7c86697
1 changed files with 15 additions and 1 deletions
|
@ -1386,6 +1386,21 @@ Removed
|
||||||
``imp.source_from_cache()`` :func:`importlib.util.source_from_cache`
|
``imp.source_from_cache()`` :func:`importlib.util.source_from_cache`
|
||||||
================================= =======================================
|
================================= =======================================
|
||||||
|
|
||||||
|
* Replace ``imp.load_source()`` with::
|
||||||
|
|
||||||
|
import importlib.util
|
||||||
|
import importlib.machinery
|
||||||
|
|
||||||
|
def load_source(modname, filename):
|
||||||
|
loader = importlib.machinery.SourceFileLoader(modname, filename)
|
||||||
|
spec = importlib.util.spec_from_file_location(modname, filename, loader=loader)
|
||||||
|
module = importlib.util.module_from_spec(spec)
|
||||||
|
# The module is always executed and not cached in sys.modules.
|
||||||
|
# Uncomment the following line to cache the module.
|
||||||
|
# sys.modules[module.__name__] = module
|
||||||
|
loader.exec_module(module)
|
||||||
|
return module
|
||||||
|
|
||||||
* Removed :mod:`!imp` functions and attributes with no replacements:
|
* Removed :mod:`!imp` functions and attributes with no replacements:
|
||||||
|
|
||||||
* undocumented functions:
|
* undocumented functions:
|
||||||
|
@ -1394,7 +1409,6 @@ Removed
|
||||||
* ``imp.load_compiled()``
|
* ``imp.load_compiled()``
|
||||||
* ``imp.load_dynamic()``
|
* ``imp.load_dynamic()``
|
||||||
* ``imp.load_package()``
|
* ``imp.load_package()``
|
||||||
* ``imp.load_source()``
|
|
||||||
|
|
||||||
* ``imp.lock_held()``, ``imp.acquire_lock()``, ``imp.release_lock()``:
|
* ``imp.lock_held()``, ``imp.acquire_lock()``, ``imp.release_lock()``:
|
||||||
the locking scheme has changed in Python 3.3 to per-module locks.
|
the locking scheme has changed in Python 3.3 to per-module locks.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue