列出命名空间包的所有子包

时间:2016-10-01 01:07:22

标签: python setuptools

Python可以创建namespace packages。如何在命名空间下获得已安装软件包的列表?

即。类似的东西:

import namespace_package
dir(namespace_pageage)

2 个答案:

答案 0 :(得分:0)

您可以使用setuptools中的find_packages功能。此功能通常在setup.py文件中使用,但您也可以将其用于其他目的。

# find the folder of the package
from pathlib import Path
package_root_folder = Path(namespace_package.__file__).parent

# for that folder, detect all Python packages inside
from setuptools import find_packages
all_packages = find_packages(str(package_root_folder))

答案 1 :(得分:0)

来自Python Packaging User Guide

import pkgutil

list(
    pkgutil.iter_modules(
        namespace_package.__path__,
        namespace_package.__name__ + "."
    )
)

请注意,这将返回主命名空间包中的(子)命名空间包(即,如果您嵌套了命名空间包)。