【发布时间】:2014-01-20 09:58:19
【问题描述】:
我需要通过终端运行批处理渲染命令,并使用 mel 回调来运行 python 模块。
我使用的终端命令是这样的:
Render -preRender "python(\"import sys\nsys.path.append(\"/Volumes/raid/farm_script/\")\nfrom run_os import Farm\nFarm()\")" "/path/to/scene.mb";
本质上,转义字符串中的命令应该这样读取:
import sys
sys.path.append("/Volumes/raid/farm_script/")
from run_os import Farm
Farm()
在 Maya 的脚本编辑器中,在 python 选项卡中运行上述命令会打印出数据。
在 mel 选项卡中运行完全相同的脚本,但包装在 python 函数中,也可以正常工作!
在位于/Volumes/raid/farm_scripts/run_os.py 下的“农场”类中,我有这个小小的脚本。
class Farm():
def __init__(self):
self.run()
def run(self, *args):
print "=== TEST ===\n"
我在脚本编辑器中看到了我的打印测试,但是在批处理渲染终端中使用 MEL 回调运行此命令时,会出现“意外缩进错误”,经过严格测试,我发现它来自from run_os import Farm,所以我的问题是,为什么这行会产生缩进错误,因为我使用的是\n(换行符)标志,所以根本没有缩进,除非我严重错误!
【问题讨论】:
-
这是一个转义规则问题,您使用的是什么操作系统和什么外壳。无论如何,您可以通过使用包含文本的 python 文件来稍微简化问题
标签: python callback render maya mel