[Python-de] Modul von anderswo laden?

Juergen Hermann jh at web.de
Fri Mar 8 16:00:16 EST 2002


On Fri, 8 Mar 2002 06:05:09 +0100, Matthias Urlichs wrote:

>ich habe hier ein Modul, nennen wir es foo.bar. Wenn ich es verwenden 
>will, sag ich folglich "import foo.bar". So weit so gut.
>
>Dummerweise ist das Ding in meiner Entwicklungsumgebung ganz 
>woanders, d.h. die Datei heisst "libtest/bar.py". Damit findet python 
>natürlich nix. Die Frage lautet nun: kann ich dem import-Statement 
>das Ding trotzdem unterschieben, ohne die Datei woandershin zu 
>kopieren oder mit Symlinks rumzuspielen?

Versuch mal dieses:

bar = importPlugin('libtest', 'foo', 'bar')

def importPlugin(path, package, modulename):
    """ Import a module in the context of this function,
        located in the given path.

        Return None on failure.
    """
    import imp
    try:
        file = None
        try:
            file, filename, description = imp.find_module(modulename, [path])
            assert file is not None
            module = imp.load_module(package + "." + modulename,
                file, filename, description)
        finally:
            if file: file.close()
    except ImportError:
        return None

    return module


Ciao, Jürgen





More information about the Python-de mailing list