如何在Maya加载时自动执行Python脚本
我正在尝试在Maya中使用Python。我想在Maya里创建一个工具栏,当我点击这个工具栏时,它会执行一个包含Python代码的文件。
首先,我发现我们不能简单地使用source
来运行Python脚本。我按照这个教程,结果我现在有了一个函数psource()
。在我的工具栏里,我可以直接调用psource("myPythonScript")
。
我的问题是,我必须在Maya第一次加载的时候注册psource()
这个函数。
有没有什么办法可以做到这一点呢?
4 个回答
你现在用的是哪个版本的Maya?如果是8.5以后的版本,Maya里面自带了Python。你放在本地Maya脚本文件夹里的任何Python脚本都会自动被加载。你可以在脚本编辑器里直接加载并运行Python脚本。
如果想要自动运行脚本,可以按照以下步骤:
- 在我的文档\maya\maya版本\scripts文件夹里创建一个userSetup.mel文件。
- 在userSetup文件里,使用下面的语法来导入和运行脚本:
python("from package import module");
python("module.method(\"passedVar1\", \"passedVar2\")");
希望这对你有帮助。
附注:同样的语法也适用于工具栏按钮。只要确保你的Python路径设置正确,这样Maya就能找到你的代码。你的本地脚本文件夹已经包含在内了……
在Maya启动时,它会自动执行一个叫做 userSetup.py
的文件。在这个文件里,你可以写一些标准的Python代码来设置你的工作环境等等。
这是2013年的文档,但在2011年和2012年也适用。我认为它在更早的版本中也应该是正确的,不过我这里没有运行更旧的版本。
顺便说一下,我的userSetup.py文件长这样:
import sys
# import a separate pyscript dir - we keep the standard scriptdir for MEL
sys.path.append(r'C:/Users/tanantish/Documents/maya/2012-x64/pyscripts')
# odds on i'm going to want PyMEL loaded by default
# and we are going to try distinguish it from the old maya.cmds
# since the two since they're similar, but not the same.
# from pymel.core import *
import pymel.core as pm
# and we might as well get maya.cmds in for testing..
import maya.cmds as mc
# import local toolpack
import tantools
(根据@jdi的评论,已将userSetup.py改为大写)
我建议你在点击按钮之前,先导入Python模块。假设你的脚本在maya/scripts/tep.py这个位置,你的按钮可以这样做:
import tep
tep.psource()
如果你想修改这个脚本,并且每次点击按钮时都能运行最新的版本,可以这样做:
import tep
reload(tep)
tep.psource()
如果你希望你的模块在Maya启动时就加载,可以在maya/scripts目录下创建一个叫userSetup.py的文件,然后让它执行以下操作:
import tep
这样一来,你的按钮就可以简单地:
tep.psource()
或者...
reload(tep)
tep.psource()