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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/modulefinder.html