modules - Encuentra qué módulos de Python se están importando
python modules list (4)
¿Cuál es una forma fácil de encontrar todos los módulos de Python de un paquete en particular que se están utilizando en una aplicación?
Creo que modulefinder es lo que estás buscando. Puede usar modulefinder.py
directamente, ejecutándolo como una secuencia de comandos como se describe allí, o puede importar el módulo y luego crear un informe usando la clase modulefinder.ModuleFinder
.
Podría usar python -v
, que emitirá mensajes sobre cada módulo importado:
$ 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
...y así sucesivamente y así sucesivamente. ¡Por supuesto que luego puede grep
los módulos de interés de entre esta gran lista!
Un método realmente simple es eliminar todos los archivos .pyc del paquete o carpeta y luego ejecutar la aplicación. Una vez que haya jugado un poco, haga una lista de directorios y vea qué archivos tienen archivos .pyc ahora. Esos son módulos que fueron importados por la aplicación.
(Nota: el módulo __main__
, el que invoque como el script "principal", nunca se compila, por lo que no debe esperar ver un archivo .pyc a menos que se haya importado algo desde la aplicación. A menudo, esto es un signo de un problema si sucede.)
sys.modules
es un diccionario que sys.modules
nombres de módulos a módulos. Puede examinar sus claves para ver los módulos importados.