匹配模式的Python模块

2024-04-28 16:28:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个模块中为一组模块(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)

Tags: 模块path方法nameimport编辑osglob
1条回答
网友
1楼 · 发布于 2024-04-28 16:28:04

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

my_module = __import__("mymodule")

然后传递给testmod,例如

^{pr2}$

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

更新:

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

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

有关说明,请参见this documentation。在

相关问题 更多 >