2012-01-25 62 views
1

我的開發環境是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://stackoverflow.com/questions/3496592/conditional-import-of-modules-in-python –

回答

1

您可以使用exec()在python中執行動態代碼。

在你的情況下,這樣的事情應該做的伎倆。

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

我試過一些內置模塊,它似乎工作正常。