inspect.getframeinfo forces all lazy modules to be loaded
Offen
Dieses Issue hat noch niemand übernommen.
stdlib
topic-importlib
type-bug
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
Create two files as follows:
main.py:
import importlib.util
import inspect
import sys
# https://docs.python.org/3/library/importlib.html#implementing-lazy-imports
def lazy_import(name):
spec = importlib.util.find_spec(name)
loader = importlib.util.LazyLoader(spec.loader)
spec.loader = loader
module = importlib.util.module_from_spec(spec)
sys.modules[name] = module
loader.exec_module(module)
return module
lazy_import('m')
f = inspect.currentframe()
inspect.getframeinfo(f)
m.py:
print("I'm loaded!")
Now run:
$ python main.py
I'm loaded!
This behavior doesn't make much sense, since f isn't even inside m.
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs
- gh-151006
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem Reproducer für main.py und m.py und verfolge anschließend inspect.getframeinfo(f) sowie das im Bericht gezeigte Lazy-Import-Setup zurück. Die Aufgabe ist erledigt, wenn der Aufruf von inspect.getframeinfo für einen Frame außerhalb von m.py nicht mehr "I'm loaded!" ausgibt; beachte, dass der verlinkte PR gh-151006 darauf hinweist, dass die Arbeit bereits im Gange ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 25/100