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