Pythonpkgutil.walk_包不返回子包

2024-05-13 02:11:54 发布

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

我有一个布局:

scenarios/
    __init__.py
    X/
        __init__.py
        Y/
            __init__.py
    Z/
        __init__.py 

我已经执行了

^{pr2}$

但这会生成一个只包含包X和Z的列表,缺少Y。我可以用什么来获取所有的子目录?在

谢谢


Tags: py列表init布局scenariospr2
1条回答
网友
1楼 · 发布于 2024-05-13 02:11:54

这里有一个理论:walk_packages函数尝试导入列出的每个模块。当它到达子包“Y”时,它试图导入它,但是出现了一个错误。默认情况下,此错误被抑制。一个副作用是walk_packages函数不会递归到Y中。例如:

import sys, pkgutil
from traceback import print_tb

def onerror(name):
    print("Error importing module %s" % name)
    type, value, traceback = sys.exc_info()
    print_tb(traceback)

import scenarios
pkgutil.walk_packages(scenarios.__path__, scenarios.__name__ + '.', onerror=onerror)

相关问题 更多 >