Skip to main content
 首页 » 编程设计

匹配模式的 Python 模块

2025年05月04日12pengyingh

我想从单个模块运行一组模块(glob:invenio.webtag*)的doctest,但我需要一个方法导入所有这些(且仅这些)模块并对所有这些模块运行 doctest.testmod()。有什么想法吗?

编辑:解决方案:

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) 

请您参考如下方法:

可以使用 __import__ 动态加载模块,例如

my_module = __import__("mymodule") 

然后传递给 testmod 例如

doctest.testmod(my_module) 

假设您可以使用 glob.glob 构建匹配模块列表或过滤来自 os.listdir 的结果您应该能够使用这种方法。

更新:

要导入 invenio.webtag,请尝试使用 fromlist:

module = __import__('invenio.webtag', globals(), locals(), ['invenio'], -1) 

参见 this documentation求解释。