modulefinder — Find modules used by a script¶
Вихідний код: Lib/modulefinder.py
Цей модуль надає клас ModuleFinder, який можна використовувати для визначення набору модулів, імпортованих сценарієм. modulefinder.py також можна запустити як сценарій, надаючи назву файлу сценарію Python як аргумент, після чого буде надруковано звіт про імпортовані модулі.
-
modulefinder.AddPackagePath(pkg_name, path)¶ Запишіть, що пакет із назвою pkg_name можна знайти у вказаному шляху.
-
modulefinder.ReplacePackage(oldname, newname)¶ Дозволяє вказати, що модуль з назвою oldname насправді є пакетом з назвою newname.
-
class
modulefinder.ModuleFinder(path=None, debug=0, excludes=[], replace_paths=[])¶ Цей клас надає методи
run_script()іreport()для визначення набору модулів, імпортованих сценарієм. шлях може бути списком каталогів для пошуку модулів; якщо не вказано, використовується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__
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: _PATTERNENDERS,SRE_FLAG_UNICODE
array:
types: __module__,IntType,TypeType
---------------------------------------------------
Modules not imported:
guido.python.ham
baconhameggs