modulefinder — Поиск модулей, используемых скриптом
Новое в версии 2.3.
Исходный код: Lib/modulefinder.py
Этот модуль предоставляет класс ModuleFinder, который можно использовать для определения набора модулей, импортированных скриптом. modulefinder.py также можно запустить как скрипт, передав имя файла Python-скрипта в качестве аргумента, после чего будет выведен отчёт об импортированных модулях.
-
modulefinder.AddPackagePath(pkg_name, path) -
Записывает, что пакет с именем pkg_name можно найти в указанном path.
-
modulefinder.ReplacePackage(oldname, newname) -
Позволяет указать, что модуль с именем oldname фактически является пакетом с именем newname. Наиболее распространённое использование — обработка того, как пакет
_xmlplusзаменяет пакетxml.
-
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.
-
1. Пример использования 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.iteritems():
print '%s: ' % name,
print ','.join(mod.globalnames.keys()[:3])
print '-'*50
print 'Modules not imported:'
print '\n'.join(finder.badmodules.iterkeys())
Пример вывода (может отличаться в зависимости от архитектуры):
Loaded modules: _types: copy_reg: _inverted_registry,_slotnames,__all__ sre_compile: isstring,_sre,_optimize_unicode _sre: sre_constants: REPEAT_ONE,makedict,AT_END_LINE sys: re: __module__,finditer,_expand itertools: __main__: re,itertools,baconhameggs sre_parse: __getslice__,_PATTERNENDERS,SRE_FLAG_UNICODE array: types: __module__,IntType,TypeType --------------------------------------------------- Modules not imported: guido.python.ham baconhameggs
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/modulefinder.html