首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将python导入pymel

将python导入pymel
EN

Stack Overflow用户
提问于 2013-03-05 11:37:49
回答 2查看 535关注 0票数 0

我正在写我的Auto-Rig脚本,注意到代码变得越来越长,很难阅读,也很难集中在一个部分上。我正在研究如何导入python文件,并调用导入的python文件中的函数。似乎找不到导入文件的方法,有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2013-04-12 19:55:19

我建议您使用python文件创建Python模块,然后从MEL文件创建:

代码语言:javascript
复制
python "import my_python_module";

string $pycommand = "my_python_module.my_function(param1, "+ $mel_string_param1 +",\"" + $mel_string_param2 + "\")";

string $result= `python $pycommand`;
票数 1
EN

Stack Overflow用户

发布于 2016-09-12 00:01:17

将您想要包含在模块中的函数编写为python文件。(提示:不要以数字开头的python文件名)。

在我的示例中,myModule.py包含:

代码语言:javascript
复制
def myFunc1():
    print 'myFunc1 is called'
    pass

def myFunc2():    
    print 'myFunc2 is called'
    return

现在将文件保存在一个文件夹中。我的示例Python文件路径是:

d:\projects\python\myModule.py

现在,在Maya会话脚本编辑器中,输入:

代码语言:javascript
复制
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)

您的模块应该被导入。

现在从myModule调用myFunc1()

myModule.myFunc1()

这将给出输出:

myFunc1 is called

现在我们从myModule调用myFunc2()

myModule.myFunc2()

这将给出输出:

myFunc2 is called

如果我们现在用一个新函数更新我们的myModule.py

代码语言:javascript
复制
def myFunc3():    
        print 'myFunc3 is called'
        return

我们只需要运行上面相同的代码来重新加载更新后的模块。

现在我们可以尝试以下语句:

myModule.myFunc3()

..。并获得以下输出:

myFunc3 is called

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15215388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档