如何用str变量在另一个脚本中执行一个脚本?

时间:2017-06-21 15:17:25

标签: python

我和Qtdesingner在python中为maya做了一个项目经理, 在UI中,QLineEdit授权用户填写要运行的脚本的路径(变量为:BatchRunScript) 但如果模块是变量(str):

,似乎无法导入模块
import maya.utils
BatchRunScript = 'X:\PathOfTheScript\NameOfScriptToRun.ScriptToRun()'
BatchRunScriptName = BatchRunScript.replace('\\', '/').split('/')[-1]
BatchRunScriptPath = BatchRunScript.replace('\\', '/').split(BatchRunScriptName)[0]
BatchRunModuleName = BatchRunScriptName.split('.')[0]       
print 'BatchRunScriptPath: ', BatchRunScriptPath    # X:/PathOfTheScript/
print 'BatchRunScriptName: ', BatchRunScriptName    # NameOfScriptToRun.ScriptToRun()
print 'BatchRunModuleName: ', BatchRunModuleName    # NameOfScriptToRun

sys.path.append(BatchRunScriptPath)
import BatchRunModuleName
maya.utils.executeDeferred(BatchRunScriptName) 

它给了我这个错误:

Error: ImportError: file <maya console> line 13: No module named BatchRunModuleName

还有另一种方法可以从另一个内部运行python脚本吗?

1 个答案:

答案 0 :(得分:1)

经过额外考虑后,我认为@Rawing是正确的,您尝试解决的问题在以下链接中阐明:Dynamic module import in Python

我在下面留下原始回复以供参考,以防您觉得有帮助。区别在于,上面的链接显示了如何基于字符串动态导入脚本,而下面的代码只是基于字符串执行另一个本地python脚本。导入v。执行。

虽然它可能被认为是&#34; hacky&#34;你总是可以利用os库从你的Python客户端中动态调用其他脚本。

import os
mystr = "myscriptname.py"
os.system('Python ' + mystr)

这将允许您根据Python文件的字符串名称调用其他python脚本,并在Python客户端中执行它们。