Документация Python неофициальный перевод

modulefinder.md

114 строк · 4.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/library/modulefinder.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 29.4. `modulefinder` – Поиск модулей, используемых скриптом89Этот модуль предоставляет класс [`ModuleFinder`](https://python-all.ru/3.1/library/modulefinder.html#modulefinder.ModuleFinder), который можно использовать для определения набора модулей, импортируемых скриптом. `modulefinder.py` также можно запустить как скрипт, передав имя файла Python-скрипта в качестве аргумента; после этого будет выведен отчёт об импортированных модулях.1011#### `modulefinder.AddPackagePath(pkg_name, path)`1213Записывает, что пакет с именем1415*pkg\_name*1617можно найти по указанному1819*пути*2021.2223#### `modulefinder.ReplacePackage(oldname, newname)`2425Позволяет указать, что модуль с именем2627*oldname*2829на самом деле является пакетом с именем3031*newname*3233.3435#### `class modulefinder.ModuleFinder(path=None, debug=0, excludes=[], replace_paths=[])`3637Этот класс предоставляет методы [`run_script()`](https://python-all.ru/3.1/library/modulefinder.html#modulefinder.ModuleFinder.run_script) и [`report()`](https://python-all.ru/3.1/library/modulefinder.html#modulefinder.ModuleFinder.report) для определения набора модулей, импортируемых скриптом. *path* может быть списком каталогов для поиска модулей; если не указан, используется `sys.path`. *debug* задаёт уровень отладки; более высокие значения заставляют класс выводить отладочные сообщения о своих действиях. *excludes* – это список имён модулей, которые следует исключить из анализа. *replace\_paths* – это список кортежей `(oldpath, newpath)`, которые будут заменены в путях модулей.3839#### `report()`4041Выводит в стандартный вывод отчёт со списком модулей, импортированных сценарием, и их путей, а также модулей, которые отсутствуют или, возможно, отсутствуют.4243#### `run_script(pathname)`4445Анализирует содержимое файла4647*pathname*4849, который должен содержать код Python.5051#### `modules`5253Словарь, отображающий имена модулей в модули. См.5455[*Пример использования ModuleFinder*](https://python-all.ru/3.1/library/modulefinder.html#modulefinder-example)5657## 29.4.1. Пример использования [`ModuleFinder`](https://python-all.ru/3.1/library/modulefinder.html#modulefinder.ModuleFinder)5859Сценарий, который будет проанализирован позже (bacon.py):6061```python62import re, itertools6364try:65    import baconhameggs66except ImportError:67    pass6869try:70    import guido.python.ham71except ImportError:72    pass73```7475Сценарий, который выведет отчёт для bacon.py:7677```python78from modulefinder import ModuleFinder7980finder = ModuleFinder()81finder.run_script('bacon.py')8283print('Loaded modules:')84for name, mod in finder.modules.items():85    print('%s: ' % name, end='')86    print(','.join(list(mod.globalnames.keys())[:3]))8788print('-'*50)89print('Modules not imported:')90print('\n'.join(finder.badmodules.keys()))91```9293Пример вывода (может отличаться в зависимости от архитектуры):9495```python96Loaded modules:97_types:98copyreg:  _inverted_registry,_slotnames,__all__99sre_compile:  isstring,_sre,_optimize_unicode100_sre:101sre_constants:  REPEAT_ONE,makedict,AT_END_LINE102sys:103re:  __module__,finditer,_expand104itertools:105__main__:  re,itertools,baconhameggs106sre_parse:  __getslice__,_PATTERNENDERS,SRE_FLAG_UNICODE107array:108types:  __module__,IntType,TypeType109---------------------------------------------------110Modules not imported:111guido.python.ham112baconhameggs113```114