2

Python 有能力创建一个命名空间包。如何获取命名空间下已安装包的列表?

即类似的东西:

import namespace_package
dir(namespace_pageage)
4

2 回答 2

3

来自Python 打包用户指南

import pkgutil

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

请注意,这不会返回主命名空间包内的(子)命名空间包(即,如果您有嵌套的命名空间包)。

于 2019-09-10T15:20:48.497 回答
0

您可以使用find_packages函数setuptools。此功能通常在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))
于 2019-09-09T12:05:03.520 回答