Come notato nei commenti, inspect.getsource non funzionerà perché dipende dal file originale (ad esempio, module.__file__ ).
Opzione migliore:controlla se c'è un .pyc file (es, foo.pyc dovrebbe essere accanto a foo.py ). Se c'è, puoi usare Decompile Python 2.7 .pyc per decompilarlo.
Il inspect i moduli memorizzano anche nella cache l'origine. Potresti essere fortunato e usare inspect.getsource(module) o inspect.getsourcelines(module.function) se è stato chiamato in passato.
Altrimenti dovrai ricostruire il modulo "manualmente" ispezionando le esportazioni (ad esempio, module.__globals__ ). Le costanti e quant'altro sono ovvie, e per le funzioni puoi usare func.func_name per ottenere il suo nome, func.__doc__ per ottenere la docstring, inspect.getargspec(func) per ottenere gli argomenti e func.func_code per ottenere dettagli sul codice:co_firstlineno otterrà il numero di riga, quindi co_code otterrà il codice. C'è di più sulla decompilazione qui:Exploring and decompiling python bytecode
Ad esempio, per utilizzare uncompyle2 :
>>> def foo():
... print "Hello, world!"
...
>>> from StringIO import StringIO
>>> import uncompyle2
>>> out = StringIO()
>>> uncompyle2.uncompyle("2.7", foo.func_code, out=out)
>>> print out.getvalue()
print 'Hello, world!'
Ma no, non sono a conoscenza di un metodo più diretto per prendere un modulo e recuperare il codice sorgente.