Представьте, что у вас есть что-то похожее на следующее yaml
:
model: !!python/object:Thirdpartyfoo.foo_module.foo_class
some_attribue: value
Кроме того, предположим, что вы уже установили пакет Thirdpartyfoo
с использованием какой-либо установки pip или чего-то еще.
Теперь вы хотите вернуть вещи из yaml обратно в python объект, так что вы делаете:
import yaml
with open('foo.yaml') as f:
dict = yaml.load(f, yaml.Loader)
Но после запуска вы получаете сообщение об ошибке:
Except ImportError as exc:
raise ConstructorError("while constructing a Python object", mark,
"cannot find module %r (%s)" % (module_name, exc), mark)
if module_name not in sys.modules:
raise ConstructorError("while constructing a Python object", mark,
"module %r is not imported" % module_name, mark)
yaml.constructor.ConstructorError: while constructing a Python object
module 'Thirdpartyfoo.foo_module' is not imported
В результате вы получите очень уродливое решение для этого:
import Thirdpartyfoo.foo_module.foo_class as dummy_import
with open('foo.yaml') as f:
dict = yaml.load(f, yaml.Loader)
Обратите внимание, что если я не буду явно упоминать строку dummy_import
, я получу неиспользованный импорт в строке ... на flake8
проверка ворса :)
Есть идеи?