Есть ли способ узнать, какие модули доступны для импорта изнутри пакета?
Как мне найти модули, доступные для импорта из пакета?
Ответы (4)
Многие пакеты будут включать список под названием __all__, в котором перечислены модули-члены. Это используется, когда python делает from x import *. Подробнее об этом можно узнать здесь.
Если пакет не определяет __all__, вам придется сделать что-то вроде ответа на вопрос, который я задал ранее, здесь.
person
DNS
schedule
18.03.2009
У вас есть источник.
Посмотрите на файлы внутри каталога пакета. Эти модули доступны для импорта.
person
S.Lott
schedule
18.03.2009
Есть много способов сделать файлы внутри пакета (каталога), которые не доступны для импорта. Механизм импорта 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
В нем перечислены все атрибуты, а не только подмодули, поэтому он не отвечает на вопрос.
- person bignose; 29.01.2010
импорт Фред
распечатать директорию (фред)
person
Phil
schedule
18.03.2009
В нем перечислены все атрибуты, а не только подмодули, поэтому он не отвечает на вопрос.
- person bignose; 29.01.2010