Como se indica en los comentarios, inspect.getsource no funcionará porque depende del archivo original (es decir, module.__file__ ).
Mejor opción:verifica si hay un .pyc archivo (por ejemplo, foo.pyc debe estar al lado de foo.py ). Si lo hay, puede usar Decompile Python 2.7 .pyc para descompilarlo.
Los inspect Los módulos también almacenan en caché la fuente. Es posible que puedas tener suerte y usar inspect.getsource(module) o inspect.getsourcelines(module.function) si ha sido llamado en el pasado.
De lo contrario, deberá reconstruir el módulo "manualmente" inspeccionando las exportaciones (es decir, module.__globals__ ). Las constantes y otras cosas son obvias, y para funciones puedes usar func.func_name para obtener su nombre, func.__doc__ para obtener la cadena de documentación, inspect.getargspec(func) para obtener los argumentos, y func.func_code para obtener detalles sobre el código:co_firstlineno obtendrá el número de línea, luego co_code obtendrá el código. Hay más información sobre cómo descompilar eso aquí:Exploración y descompilación del código de bytes de Python
Por ejemplo, para usar 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!'
Pero no, no conozco ningún método más directo para tomar un módulo y recuperar el código fuente.