modulefinder — Поиск модулей, используемых скриптом
Исходный код: Lib/modulefinder.py
Этот модуль предоставляет класс ModuleFinder, который можно использовать для определения набора модулей, импортируемых скриптом. modulefinder.py также можно запустить как скрипт, передав в качестве аргумента имя файла скрипта Python; после этого будет выведен отчет об импортированных модулях.
-
modulefinder.AddPackagePath(pkg_name, path) -
Указывает, что пакет с именем pkg_name можно найти по заданному пути path.
-
modulefinder.ReplacePackage(oldname, newname) -
Позволяет указать, что модуль с именем oldname на самом деле является пакетом с именем newname.
-
class modulefinder.ModuleFinder(path=None, debug=0, excludes=[], replace_paths=[]) -
Этот класс предоставляет методы
run_script()иreport()для определения набора модулей, импортируемых скриптом. path может быть списком каталогов для поиска модулей; если он не указан, используетсяsys.path. Параметр debug задает уровень отладки; при более высоких значениях класс выводит отладочные сообщения о выполняемых действиях. excludes — это список имен модулей, исключаемых из анализа. replace_paths — это список кортежей(oldpath, newpath), которые будут заменены в путях модулей.-
report() -
Выводит в стандартный поток вывода отчет со списком модулей, импортированных скриптом, и путей к ним, а также модулей, которые отсутствуют или, по-видимому, отсутствуют.
-
run_script(pathname) -
Анализирует содержимое файла pathname, который должен содержать код Python.
-
modules -
Словарь, сопоставляющий имена модулей модулям. См. Пример использования ModuleFinder.
-
Пример использования ModuleFinder
Скрипт, который будет проанализирован (bacon.py):
import re, itertools
try:
import baconhameggs
except ImportError:
pass
try:
import guido.python.ham
except ImportError:
pass
Скрипт, который выведет отчет о bacon.py:
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script('bacon.py')
print('Loaded modules:')
for name, mod in finder.modules.items():
print('%s: ' % name, end='')
print(','.join(list(mod.globalnames.keys())[:3]))
print('-'*50)
print('Modules not imported:')
print('\n'.join(finder.badmodules.keys()))
Пример вывода (может различаться в зависимости от архитектуры):
Loaded modules: _types: copyreg: _inverted_registry,_slotnames,__all__ re._compiler: isstring,_sre,_optimize_unicode _sre: re._constants: REPEAT_ONE,makedict,AT_END_LINE sys: re: __module__,finditer,_expand itertools: __main__: re,itertools,baconhameggs re._parser: _PATTERNENDERS,SRE_FLAG_UNICODE array: types: __module__,IntType,TypeType --------------------------------------------------- Modules not imported: guido.python.ham baconhameggs
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/modulefinder.html