modulefinder —スクリプトで使用されるモジュールを検索します—Pythonドキュメント
modulefinder —スクリプトで使用されているモジュールを検索します
ソースコード: :source: `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()メソッドを提供して、スクリプトによってインポートされたモジュールのセットを判別します。 path は、モジュールを検索するためのディレクトリのリストにすることができます。 指定しない場合、
sys.path
が使用されます。 debug はデバッグレベルを設定します。 値を大きくすると、クラスは何をしているかについてのデバッグメッセージを出力します。 excludes は、分析から除外するモジュール名のリストです。 replace_paths は、モジュールパスで置き換えられる(oldpath, newpath)
タプルのリストです。- report()
スクリプトによってインポートされたモジュールとそのパス、および欠落している、または欠落しているように見えるモジュールをリストするレポートを標準出力に出力します。
- run_script(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