代码之家  ›  专栏  ›  技术社区  ›  l0b0

与模式匹配的python模块

  •  2
  • l0b0  · 技术社区  · 15 年前

    我想跑步 doctest 对于一组模块(全局: invenio.webtag* )从一个模块,但我需要一种方法来导入所有这些(并且只导入这些)模块并运行 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)
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   mikej heading_to_tahiti    15 年前

    模块可以使用 __import__ 例如

    my_module = __import__("mymodule")
    

    然后传给 testmod 例如

    doctest.testmod(my_module)
    

    假设您可以使用 glob.glob 或从中筛选结果 os.listdir 您应该能够使用这种方法。

    更新:

    导入 invenio.webtag 尝试使用 发件人列表 :

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

    看见 this documentation 为了解释。