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