31.6. modulefinder
— Identifie les modules utilisés par un script¶
Nouveau dans la version 2.3.
Code source : Lib/modulefinder.py
Ce module fournit une classe ModuleFinder
qui peut être utilisée pour déterminer la liste des modules importés par un script. modulefinder.py
peut aussi être utilisé en tant que script, en passant le nom du fichier Python en argument, ce qui affichera un rapport sur les modules importés.
-
modulefinder.
AddPackagePath
(pkg_name, path)¶ Enregistre que le paquet pkg_name peut être trouvé au chemin path spécifié.
-
modulefinder.
ReplacePackage
(oldname, newname)¶ Allows specifying that the module named oldname is in fact the package named newname. The most common usage would be to handle how the
_xmlplus
package replaces thexml
package.
-
class
modulefinder.
ModuleFinder
([path=None, debug=0, excludes=[], replace_paths=[]])¶ This class provides
run_script()
andreport()
methods to determine the set of modules imported by a script. path can be a list of directories to search for modules; if not specified,sys.path
is used. debug sets the debugging level; higher values make the class print debugging messages about what it’s doing. excludes is a list of module names to exclude from the analysis. replace_paths is a list of(oldpath, newpath)
tuples that will be replaced in module paths.-
report
()¶ Affiche un rapport sur la sortie standard qui liste les modules importés par le script et leurs chemins, ainsi que les modules manquants ou qui n’ont pas été trouvés.
-
run_script
(pathname)¶ Analyse le contenu du fichier pathname, qui doit contenir du code Python.
-
modules
¶ Un dictionnaire de correspondance entre nom de modules et modules. Voir Exemples d’utilisation de la classe ModuleFinder.
-
31.6.1. Exemples d’utilisation de la classe ModuleFinder
¶
Le script qui sera analysé (bacon.py) :
import re, itertools
try:
import baconhameggs
except ImportError:
pass
try:
import guido.python.ham
except ImportError:
pass
Le script qui va afficher le rapport de 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())
Exemple de sortie (peut varier en fonction de l’architecture) :
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