user1050619
user1050619

Reputation: 20856

calling python module dynamically using exec

I have 2 modules

mexec1.py

def exec1func():
    print 'exec1'
    exec 'c:/python27/exec2.py'

if __name__ == '__main__':
    exec1func()

exec2.py

def exec2func(parm=''):
    print 'exec2 parm',parm

if __name__ == '__main__':
    exec2func(parm='')

From exec1.py I want to call exec2func of the exec2.py using only exec or execfile...I don't want subprocess.Popen..

Upvotes: 0

Views: 90

Answers (2)

Keith
Keith

Reputation: 43024

It would be better to make it a module and import it. If you need dynamic imports use importlib.

mod = importlib.import_module("exec2", package=None)
mod.exec2func()

Upvotes: 0

nneonneo
nneonneo

Reputation: 179452

Use import instead:

def exec1func():
    from exec2 import exec2func
    exec2func()

If you want to import using the full path, use imp.load_source:

import imp

def exec1func():
    exec2 = imp.load_source('exec2', 'c:/python27/exec2.py')
    exec2.exec2func()

Upvotes: 2

Related Questions