我和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脚本吗?
答案 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客户端中执行它们。