van . importeer x met __import__?

Hoe bereik ik van. import x (importeer module x uit het huidige pakket), met behulp van __ import __ ?

Hier zijn enkele mislukte pogingen:

>>> __import__('.', fromlist=['x'])
ValueError: Empty module name

>>> __import__('.x')
ValueError: Empty module name

Hoe wordt dit gedaan met behulp van __ import __ ?

2

2 antwoord

De __ import __ ingebouwde semantiek is aangepast met de bytecode die de interpreter genereert van import -instructies, en zijn niet bijzonder handig voor handmatig gebruik. Als ik begrijp waar je precies voor gaat, doet dit wat je wilt:

name = 'x'
mod = getattr(__import__('', fromlist=[name], level=1), name)

In versies van Python met importlib , bent u < em> might kan ook importlib.import_module overtuigen om te doen wat je wilt met minder lelijkheid, maar ik weet niet zeker of het mogelijk is om " van te krijgen. "semantiek op die manier.

3
toegevoegd
__import__(__name__, fromlist=['x'])

Dat zou je moeten krijgen wat je nodig hebt.

2
toegevoegd
Dit is een absoluut import van x , waarvoor niet is gevraagd; je moet ook iets doen met de geretourneerde waarde.
toegevoegd de auteur zwol, de bron
@Zack: Ja, maar omdat de absolute import de dynamisch ingestelde naam gebruikt, krijgt u hetzelfde resultaat. Maar ik weet niet zeker of het in een submodule werkt.
toegevoegd de auteur Lennart Regebro, de bron