除了在Maya应用程序内支持 Python,Maya也支持从独立Python解释器使用Maya Python模块。在执行批处理或从使用Python的另一应用程序(如 MotionBuilder 或 Composite)访问Maya功能时,这将非常有用。        

我们提供了独立的Python解释器,已正确配置供导入Maya功能。        

  • 在 Windows和Linux上,运行Maya bin目录中的mayapy可执行文件。

  • 在 Mac OS X上,运行 ../files/ Maya.app/Contents/bin中的mayapy可执行文件。

Python解释器加载后,必须加载和初始化Maya.为此,请在窗口中键入以下内容:        

import maya.standalone maya.standalone.initialize( name='python' )          

注意                

这些命令的执行需要花费大量时间,因为它们将加载所有Maya库并初始化场景。              

初始化程序只需要一个参数(name),并且是可选的.name参数为 Maya 提供应用程序的名称 .name的默认值是python。        

Maya加载并初始化后,所有Maya功能都应可用(maya.cmdsmaya.OpenMaya等)。但是,在Python解释器中运行Maya相当于在批处理模式下运行 Maya。这意味着所有常规Maya批处理模式限制都存在,包括禁用UI命令。        

注意                

Maya在Maya内设定PYTHONHOME环境变量,在Maya外(即使用外部解释器时)清除该变量。              

提示若要确定是否在Maya内部Python解释器中,您可以执行以下代码块:              
try: import maya.standalone maya.standalone.initialize() except: pass

如果在 Maya 内部 Python 解释器中,initialize() 调用将抛出异常,该异常将被安全捕捉。              

使用不同的 Python 解释器

可以通过 Maya 随附 Python 解释器之外的 Python 解释器使用 Maya。但是,建议使用版本号与 Maya 中所含 Python 相同的 Python。若要使用另一解释器,必须设置正确的环境。

为 Python 解释器设置环境

  1. 在解释器初始化后(但要在 Maya 初始化前),将 Maya 的 site-packages 目录添加到 PYTHONPATH 环境变量,或将其添加到 Python 内的 sys.path。该目录是:

    • Windows:./Python/Lib/site-packages

    • Mac OS X:../files/Maya.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python2.4/site-packages

    • Linux:../files/lib/python2.4/site-packages


  2. 将 MAYA_LOCATION 环境变量设定为指向 Maya 安装位置,以便 Maya 可以找到其资源。                  

    在 Mac OS X 上,MAYA_LOCATION 必须设定为指向应用程序包(即 ../files/Maya.app/Contents)。                  


  3. (Linux) 将 Maya 分发的 lib 目录添加到 LD_LIBRARY_PATH,以便 Python 可以在导入 Maya 时找到共享库。                  

    提示在 Mac OS X 上,mayapy 可执行文件是 shell 脚本,可以进行复制和修改以使用其他 Python 安装。

    设置无脚本环境

    1. 将 ../files/Maya.app/Contents/MacOS 添加到 DYLD_LIBRARY_PATH,以便 Python 可以找到 Maya 共享库。

    2. 将 ../files/Maya.app/Contents/Frameworks 添加到 DYLD_FRAMEWORK_PATH,以便 Python 可以找到 Maya 所依赖的框架。

    3. 将 MAYA_NO_BUNDLE_RESOURCES 设定为某些值。这将要求 Maya 通过 MAYA_LOCATION 查找资源,而不是通过查找主包。(当 Maya 以这种方式批处理运行时,主包不是 Maya 的主包。)


,