importing specific module

Peter Hansen peter at engcorp.com
Tue Jun 17 17:51:02 EDT 2003


drs wrote:
> 
> I feel like I have seen this answered here, but I am not finding the
> discussion, so sorry if this is asked a lot.
> 
> I would like to import a specific module which may or may not be on the
> path, and because of concerns about duplicate names, changing network
> drives, and moving files, I would rather not append sys.path.  So, something
> like
> 
> >>> import('C:\\path\\to\\some\\module.py')
> 
> is what I am looking to do. imp.load_module() seems promising, but the
> documentation is going over my head so I am not sure it is appropriate.  Any
> suggestions?  Thanks,

I think you want roughly this.  It may require some tweaks from
others here to make it robust or general enough for your intended use,
but it worked roughly as-is for me.  (Not tested exactly as it appears 
here.)

def import_from_file(name, path):
    import sys, imp
    f = open(path, 'rb')
    try:
        description = ('.py', 'r', imp.PY_SOURCE)
        mod = imp.load_module(name, f, path, description)
        sys.modules[name] = mod
    finally:
        f.close()


-Peter




More information about the Python-list mailing list