Come enumerare tutti i moduli importati?Come elencare i moduli importati?
E.g. Vorrei ottenere [ 'os', 'sys'] dal questo codice
import os
import sys
Come enumerare tutti i moduli importati?Come elencare i moduli importati?
E.g. Vorrei ottenere [ 'os', 'sys'] dal questo codice
import os
import sys
import sys
sys.modules.keys()
Un'approssimazione di ottenere tutte le importazioni per il modulo corrente unica sarebbe di ispezionare globals()
per i moduli:
import types
def imports():
for name, val in globals().items():
if isinstance(val, types.ModuleType):
yield val.__name__
Questo non tornerà importazioni locali, o le importazioni non modulo come from x import y
. Si noti che questo restituisce val.__name__
in modo da ottenere il nome del modulo originale se si è utilizzato import module as alias
; rendi il nome invece se vuoi l'alias.
Oppure è possibile trovare l'intersezione di sys.modules con globals e non eseguire affatto test di tipo. – Marcin
Infine, penso che sia meglio usare 'list (imports())' per elencare tutti i moduli importati. –
Questa è l'unica soluzione che restituisce il nome completo del modulo quando si ridefinisce il nome del modulo importato. Ad esempio, se si importa 'numpy import come np', questo restituirà' numpy' mentre gli altri due suggerimenti restituiranno 'np'. –
print [key for key in locals().keys()
if isinstance(locals()[key], type(sys)) and not key.startswith('__')]
trovare l'intersezione di sys.modules
con globals
:
import sys
modulenames = set(sys.modules)&set(globals())
allmodules = [sys.modules[name] for name in modulenames]
Forse usare un 'frozenset' qui invece? - Ecco il mio 1-liner: 'frozenset (imap (nome lambda: moduli [nome], frozenset (moduli) e frozenset (globals())))' –
che funzioni abbastanza bene con:
import sys
mods = [m.__name__ for m in sys.modules.values() if m]
Questo creerà una lista con importabili nomi dei moduli.
Se si vuole fare questo al di fuori dello script:
from modulefinder import ModuleFinder
finder = ModuleFinder()
finder.run_script("myscript.py")
for name, mod in finder.modules.iteritems():
print name
Questo stamperà tutti i moduli caricati dal myscript.py.
qualche idea del perché questo è downvoted? –
Questo codice elenca i moduli importati dal modulo:
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]
Dovrebbe essere utile se si desidera sapere quali moduli esterni da installare su un nuovo sistema per eseguire il codice, senza la necessità di provare di nuovo e ancora.
Non elencherà il modulo sys
o moduli importati da esso.
diciamo aver importato la matematica e ri:
import math, ri
ora a vedere lo stesso uso
stampa (dir())
Se si esegue prima l'importazione e dopo l'importazione, si può vedere la differenza.
Benvenuti in StackOverflow: se inserisci codice, XML o campioni di dati, evidenzia queste righe nell'editor di testo e fai clic sul pulsante "esempi di codice" ({}) sulla barra degli strumenti dell'editor o su Ctrl + K sulla tastiera per il formato e la sintassi lo evidenziano! – WhatsThePoint
volte (es: con 'ipython --pylab') interprete Python viene lanciato con moduli predefiniti caricati. Domanda rimane, per il modo di conoscere gli alias utilizzati o_O – yota
non credo sia possibile in Python nativo, ma questa domanda precedente potrebbe aiutare: http: // StackOverflow.it/questions/2572582/return-a-list-of-imported-python-modules-used-in-a-script – parent5446