I've uploaded a freeze/ModuleFinder patch to sf, #462936.
This patch adds two improvements:
1. ModuleFinder now keeps track of which module is imported by whom.
2. ModuleFinder, when instantiated with the new scan_extdeps=1 argument, tries to track dependencies of builtin and extension modules.
I'd love to hear some comments especially on the last point, so I'll shortly explain how it works.
ModuleFinder starts a separate python interpreter process with a command line of '-S -v -c "import <builtin_or_extension>"', pipes this through popen(), and scans the error-output for lines of the form 'import blabla # ....'. This is somewhat expensive, but it is the only way I've found so far to find out about these dependencies. Examples are: The multiarray extension needs the _numpy extension. Every extension using ExtensionClass needs this. cPickle needs copy_reg and other modules.
Any other ideas?