Gather all Python modules used into one folder?
Question: I don't think this has been asked before-I have a folder that has lots of
different .py files. The script I've made only uses some-but some call others
& I don't know all the ones being used. Is there a program that will get
everything needed to make that script run into one folder?

Cheers!


Answer: 
    # zipmod.py - make a zip archive consisting of Python modules and their dependencies as reported by modulefinder
    # To use: cd to the directory containing your Python module tree and type
    # $ python zipmod.py archive.zip mod1.py mod2.py ...
    # Only modules in the current working directory and its subdirectories will be included.
    # Written and tested on Mac OS X, but it should work on other platforms with minimal modifications.
    
    import modulefinder
    import os
    import sys
    import zipfile
    
    def main(output, *mnames):
        mf = modulefinder.ModuleFinder()
        for mname in mnames:
            mf.run_script(mname)
        cwd = os.getcwd()
        zf = zipfile.ZipFile(output, 'w')
        for mod in mf.modules.itervalues():
            if not mod.__file__:
                continue
            modfile = os.path.abspath(mod.__file__)
            if os.path.commonprefix([cwd, modfile]) == cwd:
                zf.write(modfile, os.path.relpath(modfile))
        zf.close()
    
    if __name__ == '__main__':
        main(*sys.argv[1:])
    

