Семантика встроенной функции __import__
связана с байт-кодом, который интерпретатор генерирует из операторов import
, и не особенно удобна для использования вручную.Если я правильно понимаю, к чему вы стремитесь, это делает то, что вы хотите:
name = 'x'
mod = getattr(__import__('', fromlist=[name], level=1), name)
В версиях Python, которые имеют importlib
, вы могли бы такжебыть в состоянии убедить importlib.import_module
делать то, что вы хотите, с меньшим уродством, но я не уверен, что таким способом можно получить семантику "from .
".