【问题标题】:Function not defined when Importing Maya Python Script导入 Maya Python 脚本时未定义函数
【发布时间】:2021-03-14 06:10:34
【问题描述】:

我有一个我用 python 编写的工具,它在 Maya 脚本编辑器中运行时完全正常。但是,我希望能够从脚本目录中导入脚本。这应该很简单,我很震惊我在搜索网络时找不到解决方案。

我的脚本格式是这样的例子:

import maya.cmds as cmds

# GUI code with buttons, they call the functions below.
#
#
def function1():
    #commands that do things

def function2():
    #commands that do things

#List of functions continues 

就像我说的,程序在脚本编辑器中运行时可以完美运行。将脚本保存到目录并使用此方法时:

import module 
reload (module)
module.function()

GUI 加载正常,但是当按下 gui 按钮时,它说功能未定义。我不明白我错过了什么?如果加载了脚本,不应该定义函数吗?任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 你的真实密码是什么?
  • 如前所述,您调用的是function() 而不是function1()function2()

标签: python function import maya


【解决方案1】:

仅仅因为 GUI 加载并不意味着您的所有功能都正确加载。您需要将文件 (module.py) 放在对您的PYTHONPATH 可见的目录中。如果你是Maya,也可以放在MAYA_SCRIPT_PATH

PYTHONPATH / MAYA_SCRIPT_PATH 是您在启动 Maya 之前设置的环境变量。在默认 Maya 安装中,您可以放置​​ module.py 文件的一些位置是:

(Windows) C:\Users\YOUR_USER_NAME\Documents\maya\scripts

(Linux) ~/maya/scripts

(Mac) - 不确定,可能也加上 ~/maya/scripts

如果你想知道你还能把它放在哪里,你运行这个

import os
print(os.getenv('MAYA_SCRIPT_PATH', ''))
print(os.getenv('PYTHONPATH', ''))

该列表中您具有写入权限的任何位置都可以添加您的 module.py 文件。

另外,值得注意的是,在您的示例中 module.function() 会失败。它需要是 module.function1() 或 module.function2() 但我假设你知道这一点。希望这会有所帮助

【讨论】:

    【解决方案2】:

    伙计们 所以我知道这是一个已经回答的老问题,但我有一些额外的信息可以帮助解决 GUI 功能不起作用的问题。 (同样的错误) 而且基本上什么地方都没有。

    所以脚本导向器仅在通过架子加载模块时提供帮助,但仍会返回相同的错误“未定义函数”

    这与如何通过 UI 元素调用函数有关。 例子。 这将允许您在脚本编辑器中调用函数 但是在导入模块时会出现函数未定义错误

    def GUI_function():
      pm.button( command = "function()")
    
    def function():
      do stuff
    

    另一方面,这是可行的。

    def GUI_function():
      pm.button( command = function)
    
    def function(*_):
      do stuff
    

    我不知道为什么,但 Maya 倾向于认为 function() 是一种节点类型 因此,如果您不使用参数,请删除方括号并且您很高兴

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2019-06-26
      • 2022-10-20
      • 1970-01-01
      相关资源
      最近更新 更多