Список всех подпакетов пакета пространства имен

Python имеет возможность создавать пакеты пространства имен. Как получить список установленных пакетов в пространстве имен?

то есть что-то вроде:

import namespace_package
dir(namespace_pageage)

0 ответов

Из Руководства пользователя Python Packaging:

import pkgutil

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

Обратите внимание, что это не вернет пакеты (под) пространства имен в основном пакете пространства имен (т. Е. Если у вас есть пакеты вложенного пространства имен).

Вы можете использовать функцию 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))
Другие вопросы по тегам