Я работаю над проектом. 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
Есть идеи по поводу возможности этого?