在Hiero中运行Python插件

时间:2017-06-26 07:30:20

标签: python python-2.7 nuke

我在从Hiero执行自定义python代码时面临一个小问题。众所周知,寻找细节的第一个地方是官方文档“Nukepedia”,Python Dev Guide和Hiero用户指南。根据Python开发指南,Hiero默认创建一个“.hiero”目录,允许人们添加插件路径以在软件中使用它们。好吧,我找不到那个目录,经过多次测试后我推断出Hiero正在使用保存在“.nuke”目录中的init.py。

所以我想也许我可以在那里添加插件路径但是继续为_fnpython模块获取着名的导入错误(在创建Python / Startup目录之前)。

我在.nuke中添加了Python / Startup文件夹并在Startup中添加了插件,我得到了同样的错误,我甚至尝试通过在init.py中添加插件的路径并得到了同样的错误。

然后我创建了一个“.hiero”文件夹并做了同样的事情,但是Hiero从未考虑过该文件夹,我推断通过在控制台中打印一些字符串,Hiero总是将init.py保存在“ .nu​​ke“文件夹并继续显示相同的错误。

最后,我试着调查安装过程并尝试分离Nuke和Hiero的文件夹,这可能会创建“.hiero”目录,但一切都是自动化的。

我要运行的代码由Nuke和Hiero(在示例目录中)提供,我只是无法弄清楚如何从程序中运行它。

我该怎么做才能解决这个问题?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

The Foundry HIERO的设置与NUKE略有不同。

HIERO有一个core模块。您将在__init__.py文件中看到它:

import FnRedirect
import FnPythonFixes
import core
import ui

try:
  if hasattr(core, "taskRegistry"):
    import importers
    import exporters
except ImportError as e:
  pass

我在Mac上运行HIERO和NUKE STUDIO,因此在包内容中有HIERO __init__.py文件的完整路径:

/Applications/Nuke10.5v5/Contents/MacOs/pythonextensions/site-packages/hiero / __init__.py

您需要使用以下方式导入此模块:

import hiero.core

或使用对core包的引用:

from core import *

要查找HIERO的当前路径,您必须在其脚本编辑器中运行此行:

print hiero.core.pluginPath()

点击此链接了解更多详情:Hiero's Environment Setup

所有这些说明适用于macOS 10.9及更高版本。以下是两个步骤:首先是终端模式,第二个是UI模式。

第1块:setup for Terminal Sessions

您需要在.hiero区域中手动创建Home目录。

在启动时运行Python的推荐默认位置是:

<强>〜/ .hiero / Python的/启动

<强>〜/ .hiero / Python的/ StartupUI

键入bash终端(当您在Home用户目录中时)以下行:

mkdir .hiero/

然后:

mkdir .hiero/Python/

然后:

mkdir .hiero/Python/StartupUI/

然后导航到Home目录:

cd ~

并检查:

ls -a

此外,您可以使用环境变量HIERO_PLUGIN_PATH指定任意数量的用户定义路径,就像标准的Unix PATH环境变量一样。

为此,您需要在environment variable中设置.bash_profile。要在终端PICO编辑器中运行,只需键入(记住您需要sudo命令的管理员密码):

sudo pico .bash_profile

并将这三行粘贴到其中(对swift更改<yourName>并保存此文件):

echo HIERO environment var is set...
export HIERO_PLUGIN_PATH=/Users/swift/.hiero/Python/StartupUI/
export PATH=$PATH:$HIERO_PLUGIN_PATH

ctrl o

写出一个文件

使用 ctrl退出pico编辑器 x

重新启动终端

在终端中,您可以打印此环境变量输入:

printenv HIERO_PLUGIN_PATH

您应该放入StartupUI目录menu.py,任意xxxx.pyxxxx.pyc个文件集以及__init__.py文件。

现在,您可以在/Users/swift/.hiero/Python/StartupUI/中使用Terminal Mode路径。

enter image description here

第2块:setup for UI Sessions

要分配HIERO在加载插件时搜索的当前路径,您需要使用以下行创建__init__.py文件:

import hiero.core

path='/Users/swift/.hiero/Python/Startup/'
hiero.core.addPluginPath(path)

之后,在Python/Startup/文件夹下创建~/.nuke/个子目录。

这不是一个错误:我输入.nuke

然后将此__init__.py文件放入/Users/swift/.nuke/Python/Startup/目录。

如果有效,请重启HIERO(或NUKE STUDIO)。

之后启动HIERO或NUKE STUDIO并运行

print hiero.core.pluginPath()
在HIERO的脚本编辑器或NUKE STUDIO的脚本编辑器中的

命令,你会看到这个结果:

enter image description here

之后,您将在__init__.pyc目录中找到新的/Users/swift/.nuke/Python/Startup/文件。

导入HIERO时发现的每个包或模块都已导入并添加到内置包hiero.plugins

测试1:custom_guides.py

我没有HIERO的商业版本,因此我使用NUKE STUDIO NC测试了custom_guides.py脚本(找到here)。

我将custom_guides.py放在~/.nuke/Python/Startup目录中,然后在位于init.py目录中的NUKE&#39 {s} ~/.nuke文件中添加了两行。

import nuke
nuke.pluginAddPath("./Python/Startup")

我唯一可以说的是:"it works"做同样的动作,它会为HIERO工作。

查看safe_zonemasking_ratio下拉菜单。它们是不同的:前后。

在上传custom_guides.py脚本之前:

enter image description here

上传custom_guides.py脚本后:

enter image description here

# file custom_guides.py contains these lines:

viewer_masks = [
    hiero.ui.guides.MaskGuide("NTSC", 0.91),
    hiero.ui.guides.MaskGuide("PAL", 1.09),
    hiero.ui.guides.MaskGuide("NTSC_16:9", 1.21),
    hiero.ui.guides.MaskGuide("PAL_16:9", 1.46),
    hiero.ui.guides.MaskGuide("Cinemascope 2:1", 2.0)  
]

测试2:web_browser.py

我将web_browser.py文件放在~/.nuke/Python/Startup目录中。这个Python脚本使用PySide Qt编写的Web浏览器创建了可停靠的面板。

enter image description here

我没有商业版的HIERO所以我使用NUKE STUDIO NC测试了web_browser.py脚本(找到here)。