在python 2.6中加载带有可变路径的模块?

问题描述:

我的开发环境是python 2.6,所以importlib.import_module()语法不适用于我。我试图加载一个模块的路径是由变量设置的;这在2.6甚至可能吗?在python 2.6中加载带有可变路径的模块?

背景是我轮询来自不同供应商的许多设备,因此在各种目录中,我有包装类,所有这些类都有相同的方法和返回类型,它们处理供应商特定的方法来获取我需要的数据。因此,基于供应商,我可能需要加载“platform_foo.stats”或“platform_bar.stats”,然后在生成的模块上调用相同的方法。

所以,这样的事情,除非这显然是不工作代码:

vendor = get_vendor(hostname) 
vendor_path = 'platform_%s.stats' % vendor 
import vendor_path 
stats = vendor_path.stats(constructor_args) 

任何想法?

+0

http://*.com/questions/3496592/conditional-import-of-modules-in-python –

您可以使用exec()在python中执行动态代码。

在你的情况下,这样的事情应该做的伎俩。

vendor = get_vendor(hostname) 
vendor_path = 'platform_%s.stats' % vendor 
exec("import " + vendor_path) 
stats = vendor_path.stats(constructor_args) 

我试过一些内置模块,它似乎工作正常。