0

我正在编写我的 Auto-Rig 脚本,并注意到代码变得很长,难以阅读和专注于某一部分。我正在研究导入一个 python 文件并调用导入的 python 文件中的函数。似乎找不到导入文件的方法,有人可以帮我解决这个问题。

4

2 回答 2

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`;
于 2013-04-12T11:55:18.890 回答
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

于 2016-09-11T16:01:16.887 回答