2
我想從一個模塊運行一組模塊(glob:invenio.webtag*
),但我需要一種方法來導入所有這些模塊(並且只運行這些模塊)並運行doctest.testmod()
。有任何想法嗎?Python模塊匹配模式
編輯:將溶液:使用__import__
例如
import doctest
import glob
import os
import pkgutil
pkgpath = pkgutil.extend_path([], 'invenio')[0]
for module_path in glob.glob(pkgpath + '/webtag*.py'):
module_name = os.path.splitext(os.path.basename(module_path))[0]
module = __import__('invenio.' + module_name)
doctest.testmod(module)
很酷,謝謝。現在我只需要弄清楚爲什麼這段代碼導入'invenio'而不是'invenio.webtag':'module = __import __('invenio.webtag')' – l0b0 2010-03-04 13:08:23
@ l0b0:從'__import__'文檔:「導入時請注意,當fromlist爲空時,__import __('A.B',...)將返回程序包A,但fromlist中的子程序B不爲空時將返回程序包B. – 2010-03-04 13:19:48
我已更新答案以顯示如何導入子模塊。 Pär在我進行編輯時發表了同樣的評論。 – mikej 2010-03-04 13:22:42