2010-08-21 3 views

Répondre

4

Vous pouvez démonter un module à code Python en utilisant le module dis de la bibliothèque standard: qui produit la source humaine lisible définitivement, mais pas la source Python, mais plutôt bytecode source. Remettre les oeufs ensemble à partir de l'omelette est un peu plus difficile.

Il y avait un décompilateur pour Python 2.3 (voir here) mais je ne sais pas si quelqu'un l'a maintenu au cours des dernières années, ce qui suggère qu'il n'y a pas beaucoup d'intérêt pour cette tâche dans la communauté open source . Si vous n'êtes pas d'accord, vous pouvez créer ce projet en créant votre propre projet avec l'objectif de décompiler 2.7 (ou toute autre version de Python que vous souhaitez décompiler) et attirer d'autres personnes enthousiastes à propos de cette tâche - si vous pouvez les trouver.

+1

... et même si vous obtenez un décompilateur de travail (dans le sens que le résultat * fonctionne *), il propably ne produira pas le code source lisible/maintanable, du moins pas de manière fiable. +1 de toute façon. – delnan

+0

Possible oui, facile - pas du tout. – Eloff

0

En général, le code source sera disponible dans le système de fichiers, dans des endroits qui peuvent être facilement découverts à partir sys.modules.

for name, mod in sys.modules.items(): 
    try: 
     fname = mod.__file__ 
    except AttributeError: 
     continue 
    if fname.endswith(".pyc"): 
     fname = fname[:-1] 
    try: 
     fcode = open(fname) 
    except IOError: 
     continue 
    code = fcode.read() 
    # .. do something with name and code 
Questions connexes