Как мне найти модули, доступные для импорта из пакета?

Есть ли способ узнать, какие модули доступны для импорта изнутри пакета?


person Dan    schedule 18.03.2009    source источник


Ответы (4)


Многие пакеты будут включать список под названием __all__, в котором перечислены модули-члены. Это используется, когда python делает from x import *. Подробнее об этом можно узнать здесь.

Если пакет не определяет __all__, вам придется сделать что-то вроде ответа на вопрос, который я задал ранее, здесь.

person DNS    schedule 18.03.2009

У вас есть источник.

Посмотрите на файлы внутри каталога пакета. Эти модули доступны для импорта.

person S.Lott    schedule 18.03.2009
comment
Есть много способов сделать файлы внутри пакета (каталога), которые не доступны для импорта. Механизм импорта Python знает разницу, поэтому кажется разумным раскрыть эту функциональность, а не заставлять всех ее изобретать заново. - person bignose; 29.01.2010

директория ([объект]);

Без аргументов dir () возвращает список имен в текущей локальной области. С аргументом попытайтесь вернуть список допустимых атрибутов для этого объекта.

Итак, в случае модуля, такого как 'sys':

>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__', '__stdin__', '__stdout__', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']

Вот и все, что нужно сделать.

person Community    schedule 18.03.2009
comment
В нем перечислены все атрибуты, а не только подмодули, поэтому он не отвечает на вопрос. - person bignose; 29.01.2010

импорт Фред

распечатать директорию (фред)

person Phil    schedule 18.03.2009
comment
В нем перечислены все атрибуты, а не только подмодули, поэтому он не отвечает на вопрос. - person bignose; 29.01.2010