Есть ли способ узнать, какие модули доступны для импорта изнутри пакета?Как найти модули, доступные для импорта из пакета?
ответ
Многие пакеты будут включать в себя список под названием __all__
, в котором перечислены модули-члены. Это используется, когда python делает from x import *
. Вы можете узнать больше об этом here.
Если пакет не определяет __all__
, вам нужно будет сделать что-то вроде ответа на вопрос, который я задал ранее, here.
импорта Фред
печати реж (Фреда)
У вас есть источник.
Посмотрите на файлы внутри каталога пакета. Эти модули доступны для импорта.
Существует множество способов размещения файлов внутри пакета (каталога), которые являются * не * модулями, доступными для импорта. Механизм импорта Python знает разницу, поэтому представляется разумным, чтобы он раскрывал эту функциональность, а не все ее изобретать. – bignose
Invent? Придумайте что? Просто прочитайте источник. –
dir ([object]);
Без аргументов 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']
Это все есть на него.
В этом списке перечислены все атрибуты, а не только подмодули, поэтому он не отвечает на вопрос. – bignose
В этом списке перечислены все атрибуты, а не только подмодули, поэтому он не отвечает на вопрос. – bignose