2

我在执行来自 Hiero 的定制 python 代码时遇到了一个小问题。众所周知,首先要查找详细信息的地方是官方文档“Nukepedia”、Python 开发指南和 Hiero 用户指南。根据 Python 开发指南,Hiero 默认创建一个“.hiero”目录,允许人们添加插件路径以在软件中使用它们。好吧,我找不到那个目录,经过几次测试,我推断 Hiero 正在使用保存在“.nuke”目录中的 init.py。

所以我想也许我可以在那里添加插件路径,但不断收到著名的 _fnpython 模块导入错误(在创建 Python/Startup 目录之前)。

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

然后我创建了一个“.hiero”文件夹并做了和以前一样的事情,但是 Hiero 从来没有考虑过这个文件夹,我推断通过在控制台中打印一些字符串,Hiero 总是使用保存在“.nuke”中的 init.py文件夹并一直显示相同的错误。

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

我想运行的代码由 Nuke 和 Hiero 给出(在示例目录中),我只是不知道要从程序中运行它要做什么。

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

先感谢您。

4

1 回答 1

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,所以__init__.py包内容中有 HIERO 文件的完整路径:

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

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

import hiero.core

或使用对core包的引用:

from core import *

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

print hiero.core.pluginPath()

单击此链接以获取更多详细信息:Hiero 的环境设置

所有这些说明都适用于 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

您还可以使用 environment variable 指定任意数量的用户定义路径HIERO_PLUGIN_PATH,就像标准的 UnixPATH环境变量一样。

为此,您需要设置一个environment variablein .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

退出 pico 编辑器ctrl x

重启终端

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

printenv HIERO_PLUGIN_PATH

您应该在该StartupUI目录menu.py中放入任何一组xxxx.pyxxxx.pyc文件,以及__init__.py文件。

现在您可以/Users/swift/.hiero/Python/StartupUI/Terminal Mode.

在此处输入图像描述

块 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 的脚本编辑器中执行命令,您将看到以下结果:

在此处输入图像描述

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

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

测试 1:custom_guides.py

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

我放置custom_guides.py~/.nuke/Python/Startup目录中,然后在init.py位于~/.nuke目录中的 NUKE 文件中添加了两行。

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

我唯一能说的:"it works"做和我一样的动作,它会为 HIERO 工作。

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

上传custom_guides.py脚本前:

在此处输入图像描述

上传custom_guides.py脚本后:

在此处输入图像描述

# 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 浏览器创建可停靠面板。

在此处输入图像描述

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

于 2017-06-26T10:49:31.257 回答