modulefinder.md
1> **Источник:** https://python-all.ru/3.0/library/modulefinder.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `modulefinder` – Поиск модулей, используемых скриптом89Этот модуль предоставляет класс [`ModuleFinder`](https://python-all.ru/3.0/library/modulefinder.html#modulefinder.ModuleFinder), который можно использовать для определения набора модулей, импортируемых скриптом. `modulefinder.py` также можно запустить как скрипт, передав имя файла Python-скрипта в качестве аргумента; после этого будет выведен отчёт об импортированных модулях.1011#### `[modulefinder.AddPackagePath]modulefinder.AddPackagePath(pkg_name, path)`1213Записывает, что пакет с именем1415*pkg\_name*1617можно найти по указанному1819*пути*2021.2223#### `[modulefinder.ReplacePackage]modulefinder.ReplacePackage(oldname, newname)`2425Позволяет указать, что модуль с именем2627*oldname*2829на самом деле является пакетом с именем3031*newname*3233. Чаще всего это используется для обработки того, как пакет3435`_xmlplus`3637заменяет пакет3839`xml`4041.4243#### `[modulefinder.ModuleFinder]class modulefinder.ModuleFinder([path=None, debug=0, excludes=[], replace_paths=[]])`4445Этот класс предоставляет методы [`run_script()`](https://python-all.ru/3.0/library/modulefinder.html#modulefinder.ModuleFinder.run_script) и [`report()`](https://python-all.ru/3.0/library/modulefinder.html#modulefinder.ModuleFinder.report) для определения набора модулей, импортируемых скриптом. *path* может быть списком каталогов для поиска модулей; если не указан, используется `sys.path`. *debug* задаёт уровень отладки; более высокие значения заставляют класс выводить отладочные сообщения о своих действиях. *excludes* – это список имён модулей, которые следует исключить из анализа. *replace\_paths* – это список кортежей `(oldpath, newpath)`, которые будут заменены в путях модулей.4647#### `[modulefinder.ModuleFinder.report]report()`4849Выводит в стандартный вывод отчёт со списком модулей, импортированных сценарием, и их путей, а также модулей, которые отсутствуют или, возможно, отсутствуют.5051#### `[modulefinder.ModuleFinder.run_script]run_script(pathname)`5253Анализирует содержимое файла5455*pathname*5657, который должен содержать код Python.5859#### `[modulefinder.ModuleFinder.modules]modules`6061Словарь, отображающий имена модулей в модули. См.6263[*Пример использования ModuleFinder*](https://python-all.ru/3.0/library/modulefinder.html#modulefinder-example)6465## Пример использования [`ModuleFinder`](https://python-all.ru/3.0/library/modulefinder.html#modulefinder.ModuleFinder)6667Сценарий, который будет проанализирован позже (bacon.py):6869```python70import re, itertools7172try:73 import baconhameggs74except ImportError:75 pass7677try:78 import guido.python.ham79except ImportError:80 pass81```8283Сценарий, который выведет отчёт для bacon.py:8485```python86from modulefinder import ModuleFinder8788finder = ModuleFinder()89finder.run_script('bacon.py')9091print('Loaded modules:')92for name, mod in finder.modules.items():93 print('%s: ' % name, end='')94 print(','.join(mod.globalnames.keys()[:3]))9596print('-'*50)97print('Modules not imported:')98print('\n'.join(finder.badmodules.keys()))99```100101Пример вывода (может отличаться в зависимости от архитектуры):102103```python104Loaded modules:105_types:106copyreg: _inverted_registry,_slotnames,__all__107sre_compile: isstring,_sre,_optimize_unicode108_sre:109sre_constants: REPEAT_ONE,makedict,AT_END_LINE110sys:111re: __module__,finditer,_expand112itertools:113__main__: re,itertools,baconhameggs114sre_parse: __getslice__,_PATTERNENDERS,SRE_FLAG_UNICODE115array:116types: __module__,IntType,TypeType117---------------------------------------------------118Modules not imported:119guido.python.ham120baconhameggs121```122