Maya中Python如何实现MEL的getenv与putenv功能?
在Maya中用Python实现MEL的
getenv和putenv功能 获取环境变量(对应MEL的getenv)
有两种实用方法:
- 用Maya官方的Python命令
maya.cmds.getEnv(),完全对应MEL的getenv:import maya.cmds as cmds arnold_path = cmds.getEnv('ARNOLD_PLUGIN_PATH') print(arnold_path) - 直接用Python标准库
os模块,通过os.getenv()或os.environ读取:import os arnold_path = os.getenv('ARNOLD_PLUGIN_PATH') # 也可以用os.environ.get(),避免变量不存在时报错 arnold_path = os.environ.get('ARNOLD_PLUGIN_PATH', '默认路径') print(arnold_path)
设置环境变量(对应MEL的putenv)
两种方式要注意作用范围的区别:
- 用
maya.cmds.putEnv(),修改的是Maya内部的环境变量,对Maya插件、内置工具等全部生效:import maya.cmds as cmds cmds.putEnv('ARNOLD_PLUGIN_PATH', 'C:/your/arnold/plugin/path') # 验证设置结果 print(cmds.getEnv('ARNOLD_PLUGIN_PATH')) - 用Python的
os.environ,仅修改当前Python进程的环境变量,部分依赖Maya内部环境的组件可能不识别这个修改,适合Python脚本自身使用:import os os.environ['ARNOLD_PLUGIN_PATH'] = 'C:/your/arnold/plugin/path' print(os.getenv('ARNOLD_PLUGIN_PATH'))
为什么maya.mel.getenv会报错?
maya.mel模块不是直接把MEL命令作为属性暴露的,要调用MEL命令得用mel.eval()执行命令字符串:
import maya.mel as mel arnold_path = mel.eval('getenv "ARNOLD_PLUGIN_PATH";') print(arnold_path)
不过这种写法绕弯子,不如直接用maya.cmds或os模块方便,不推荐。
内容的提问来源于stack exchange,提问作者Eddy Khemiri
相关产品推荐
相关产品推荐

