Importlib模塊與__import__都可以通過過字符串來導入另外一個模塊,但在用法上和本質上都有很大的不同。
以一個例子為證:
以下為我的工程目錄結構:
lib/test.py:
name = "Jack" def getName(): print(name) return name
demo.py:
name = "Amy" def getName(): print(name) return name
Importlib模塊的例子:
testImportlib.py:
import importlib mName = "lib.test" module = importlib.import_module(mName) module.getName()
Importlib是python的一個庫,通過導入importlib,調用import_module()方法,傳入用戶想要獲取的模塊對應的路徑字符串,即可獲取一個,模塊module,module可以調用這個test模塊下的所有屬性和方法。
運行截圖:
__import__的例子:
__import__是python的一個內置方法,直接調用__import__()即可獲取一個模塊.
testImport.py:
mName = "demo" module = __import__(mName) module.getName()
此時調用的是相同目錄下的demo模塊,可順利地獲取這個模塊,那么當不再同一個目錄下呢?
修改testImport.py:
mName = "lib.test" module = __import__(mName) module.getName()
此時的運行結果為:
出錯提示為,當前的模塊'lib'沒有getName()這個方法,因此沒有正確獲取到test模塊。
繼續修改此文件:
mName = "lib.test" module = __import__(mName,fromlist = ('test',)) module.getName()
運行結果為:
當加上fromlist屬性即可正確獲取。