执行脚本时忽略模块调用

时间:2014-05-29 07:00:54

标签: python maya

如果我的标题有误导性我很抱歉,因为我不确定如何写它。无论如何,我正在尝试加载一个文件(让我们称之为testNuke)并运行一个名为getNodes的函数 我在Maya脚本编辑器中输入以下内容:

from nukeProcess.rendering import testNuke
testNuke.getNodes()

我收到错误ImportError: No module named nuke。当我在网上搜索时,我发现import nuke仅适用于Nuke应用程序脚本编辑器,并且让它在外部运行需要一些其他方法。

因此我想知道在执行2行代码时,我是否可以添加另一行来忽略import nuke?否则,我是否真的必须在脚本中删除该行,重新保存然后执行它?

2 个答案:

答案 0 :(得分:0)

你可以使用try和except方法

try:
    from nukeProcess.rendering import testNuke
    testNuke.getNodes()
except:
    print 'Warning : nuke module can't be imported'
希望它有所帮助。

答案 1 :(得分:0)

需要对模块做一些假设

  1. 使用nuke模块的任何函数仅在Nuke中调用,而不是您尝试在Maya中调用的函数。
  2. 您有充分的理由需要导入导入nuke的模块,而不是每个导入通用渲染模块的基于Nuke和Maya的脚本。如果没有,请考虑重组它
  3. 您需要实际执行模块的某些部分,而不能完全跳过它
  4. 假设所有这些,您将要将import nuke(在testNuke模块中)包装在try..except块中:

    try:
        import nuke
    except ImportError:
        # handle it somehow
        pass
    

    您如何处理ImportError取决于您。显然,正如我所写,任何调用Nuke函数的尝试都会引发NameError

    如果您想为这些案例制作一个特殊例外,您应该使用nuke方法编写我们自己的.__getattr__类,这反过来会引发您的自定义异常。如果这是一条你想要帮助的路线,那么它可能超出了这个问题的范围,并且可以作为一个新的问题被提出,与Maya细节无关。