使用exec动态调用python模块

时间:2012-10-25 03:31:04

标签: python

我有2个模块

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='')

从exec1.py我想只使用exec或execfile调用exec2.py的exec2func ...我不想要subprocess.Popen ..

2 个答案:

答案 0 :(得分:2)

改为使用import

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

如果要使用完整路径导入,请使用imp.load_source

import imp

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

答案 1 :(得分:0)

最好将它作为一个模块并导入它。如果需要动态导入,请使用importlib。

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