Quel est un moyen facile de trouver tous les modules python d'un paquet particulier qui sont utilisés dans une application?Trouver quels modules python sont importés
Répondre
sys.modules
est un nom de module de mappage de dictionnaire aux modules. Vous pouvez examiner ses clés pour voir les modules importés.
Vous pouvez utiliser python -v
, qui émettent des messages sur chaque module importé:
$ echo 'print "hello world"' > helo.py
$ python -v helo.py
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.py
import site # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py
import os # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc
import posix # builtin
# /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc matches /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.py
import posixpath # precompiled from /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc
... et ainsi de suite, et ainsi de suite. Bien sûr, vous pouvez ensuite grep
les modules d'intérêt parmi cette grande liste -)
je pense modulefinder est ce que vous cherchez. Vous pouvez utiliser modulefinder.py
directement, en l'exécutant comme un script comme il est décrit ici, ou vous pouvez import the module and then create a report en utilisant la classe modulefinder.ModuleFinder
.
Il ne fournit pas autant d'informations que la réponse de @Alex Martelli. – user183037
Une méthode très simple consiste à supprimer tous les fichiers .pyc du package ou du dossier, puis à exécuter l'application. Une fois que vous avez joué un peu, faites une liste de répertoires et voyez quels fichiers ont des fichiers .pyc maintenant. Ce sont des modules qui ont été importés par l'application. (Note: le module __main__
, celui que vous appelez le script "principal", n'est jamais compilé, donc vous ne devriez pas vous attendre à voir un fichier .pyc à moins que quelque chose ne l'ait importé depuis l'application. souvent un signe d'un problème si cela arrive.)
bien c'était facile! –
Vous avez oublié la référence: http://docs.python.org/library/sys.html#sys.modules –
Je ne suis pas sûr des détails quant à pourquoi mais cela ne contient pas réellement ** TOUS ** les paquets disponibles. J'essayais d'identifier où python importait 'multiprocessing' qui ne figurait pas dans la liste. En utilisant 'python -v', avec le drapeau verbose travaillé. –