2012-03-30 16 views
9

¿Cómo obtengo una lista de todos los módulos de Python disponibles?Python: una lista completa de módulos

No quiero módulos de módulos. Solo una lista básica de todos los módulos disponibles en sys.path.

help('modules') no es la solución, porque quiero que esté disponible como una variable e importa esos módulos, lo que tiene efectos secundarios.

Editar: Con efectos secundarios me refiero a las bibliotecas como kivy de http://kivy.org/, que hacen uso del hecho, que el código se ejecuta una vez que lo importe.

+1

No veo cómo esto es una pregunta duplicado, ya que 'pkgutil' ni siquiera se menciona en el otro hilo y aquí hay una limitación clara: ** ¡No hay efectos secundarios! ** –

Respuesta

7

pkgutil - Utilidades para apoyar paquetes

esto dará paso a una tupla para todos los submódulos en sys.path:

pkgutil.iter_modules() 

a ver lo que está cargado, mira:

sys.modules 

"Este es un diccionario que asigna nombres de módulos a módulos que ya tienen cargados"

una lista de módulos cargados:

sys.modules.keys() 
+1

"que ya se han cargado". OP quiere todos los módulos cargables. – liori

+0

primera respuesta editada –

+1

@jsbueno. ¿cómo pkgutil * no * responde esto? afaict, da lo que pide: "lista de todos los módulos disponibles en sys.path". –

5

Uso del script externo "pydoc" que viene junto con un pitón instalar: desde el shell del sistema, escriba :

$ pydoc modules 

pydoc se puede utilizar dentro de Python, así, de una manera de tener que caminar todo lo disponible es:

all_mod = [] 
pydoc.ModuleScanner().run(callback=(lambda *a: all_mod.append(a[1])), onerror=lambda *a:None) 
print all_mod 
+0

Una buena idea, pero importa esos módulos (puede tener efectos secundarios si tiene cosas como 'kivy' instalado. –

+0

Lo que pydoc hace es verificar manualmente todos los archivos disponibles y luego importarlos - si no desea la parte de importación , Creo que tendrá que mirar el código pydoc y copiar desde allí para ver todos los módulos disponibles (incluidos los archivos zip y los huevecillos). – jsbueno

Cuestiones relacionadas