2010-01-04 7 views

Répondre

35

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.

+2

bien c'était facile! –

+2

Vous avez oublié la référence: http://docs.python.org/library/sys.html#sys.modules –

+1

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é. –

31

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 -)

+4

Cela aurait dû être la réponse acceptée. – Escualo

+0

Sous linux, vous devrez utiliser python -v helo.py 2> stuff.txt, pour autoriser grep, car -v semble sortir vers stderr. – Martlark

1

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.

+0

Il ne fournit pas autant d'informations que la réponse de @Alex Martelli. – user183037

0

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.)

Questions connexes