librería - que es pip python
¿Cómo hacer una lista de los módulos importados? (7)
En realidad está funcionando bastante bien con:
import sys
mods = [m.__name__ for m in sys.modules.values() if m]
Esto creará una lista con nombres de módulos importables .
¿Cómo enumerar todos los módulos importados?
Por ejemplo, me gustaría obtener [''os'', ''sys''] de este código
import os
import sys
Encuentre la intersección de sys.modules
con globals
:
import sys
modulenames = set(sys.modules)&set(globals())
allmodules = [sys.modules[name] for name in modulenames]
Este código enumera los módulos importados por su módulo:
import sys
before = [str(m) for m in sys.modules]
import my_module
after = [str(m) for m in sys.modules]
print [m for m in after if not m in before]
Debería ser útil si quiere saber qué módulos externos instalar en un nuevo sistema para ejecutar su código, sin la necesidad de intentarlo una y otra vez.
No mostrará el módulo sys
o los módulos importados de él.
Si quieres hacer esto desde fuera del script:
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script("myscript.py")
for name, mod in finder.modules.iteritems():
print name
Esto imprimirá todos los módulos cargados por myscript.py.
digamos que ha importado matemáticas y re:
Importar matemáticas, re
ahora para ver el mismo uso
imprimir (dir ())
Si lo ejecuta antes de la importación y después de la importación, puede ver la diferencia.
import sys
sys.modules.keys()
Una aproximación de obtener todas las importaciones para el módulo actual solo sería inspeccionar globals()
para los módulos:
import types
def imports():
for name, val in globals().items():
if isinstance(val, types.ModuleType):
yield val.__name__
Esto no devolverá las importaciones locales ni las importaciones que no sean módulos como from x import y
. Tenga en cuenta que esto devuelve val.__name__
para que obtenga el nombre del módulo original si utilizó el import module as alias
; nombre de rendimiento en su lugar si desea el alias.
print [key for key in locals().keys()
if isinstance(locals()[key], type(sys)) and not key.startswith(''__'')]