Список всех подпакетов пакета пространства имен
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))