我正在处理我的Auto-Rig脚本,并注意到代码变得越来越难以阅读并专注于一个部分。我正在寻找导入python文件并调用导入的python文件中的函数。似乎无法找到导入文件的方法,有人可以帮助我。
答案 0 :(得分:1)
我建议您使用Python文件创建python模块,然后从MEL文件中创建:
python "import my_python_module";
string $pycommand = "my_python_module.my_function(param1, "+ $mel_string_param1 +",\"" + $mel_string_param2 + "\")";
string $result= `python $pycommand`;
答案 1 :(得分:0)
将要包含在模块中的函数写为python文件。 (提示:不要用数字开始你的python文件名)。
在我的示例myModule.py
中包含:
def myFunc1():
print 'myFunc1 is called'
pass
def myFunc2():
print 'myFunc2 is called'
return
现在将文件保存在文件夹中。我的示例Python文件路径是:
d:\projects\python\myModule.py
现在,在Maya会话脚本编辑器中,输入:
import sys
import os
modulePath = os.path.realpath(r'd:\projects\python\myModule.py')
moduleName = 'myModule'
if modulePath not in sys.path:
sys.path.append(modulePath)
try:
reload(moduleName)
except:
exec('import %s' % moduleName)
您的模块应该导入。
现在从myFunc1()
致电myModule
:
myModule.myFunc1()
这将给出输出:
myFunc1 is called
现在我们从myFunc2()
致电myModule
:
myModule.myFunc2()
这将给出输出:
myFunc2 is called
如果我们现在使用新功能更新我们的myModule.py
:
def myFunc3():
print 'myFunc3 is called'
return
我们只需要运行上面相同的代码来重新加载更新的模块。
现在我们可以尝试声明:
myModule.myFunc3()
...并获得此输出:
myFunc3 is called