Перехват импорта модуля для загрузки модуля из файла конфигурации - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над проектом. Python 2, к сожалению, из-за проблем совместимости. Я хочу предоставить базовую функциональность в модуле, а затем иметь возможность иметь пользовательский модуль, указанный в конфигурационном файле, который перезаписывает базовый модуль, если он там есть.

tll/
  __init__.py  
  custom.py

Вот что я сейчас делаю:

path = '/path/to/other/custom.py' # actually from a config file but doesn't matter
import imp

class Config:
    def __init__(self):
        if path != '':
            self.custom = imp.load_source('tll.custom', path)
        else:
            import tll.custom
            self.custom = tll.custom

Это работает, но мне было интересно, смогу ли я сделать это без использования другого класса. Я хочу сделать что-то вроде:

# in tll/custom.py

path = ConfigurationManager().get('customisation')
if path is not None:
    import imp
    module = imp.load_source('tll.custom', path)
    return module

... 

# and then the base functions down here

Есть идеи по поводу возможности этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...