我在从Hiero执行定制的python代码时遇到一个小问题。众所周知,查找细节的第一位是官方文档“ Nukepedia”,《 Python开发指南》和《 Hiero用户指南》。根据Python开发指南,Hiero默认情况下会创建一个“ .hiero”目录,该目录允许人们添加插件路径以在软件中使用它们。好吧,我找不到该目录,经过几次测试,我推断出Hiero使用的是保存在“ .nuke”目录中的init.py。

因此,我认为也许可以在此处添加插件路径,但仍会在_fnpython模块中收到著名的Import Error(在创建Python / Startup目录之前)。

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

然后,我创建了一个“ .hiero”文件夹,并执行了与以前相同的操作,但是Hiero从未考虑该文件夹,我推断出,通过在控制台中打印一些字符串,Hiero始终使用保存在“ .nuke”中的init.py。文件夹并保持显示相同的错误。

最后,我尝试研究安装过程,并尝试分离Nuke和Hiero的文件夹,这也许会创建“ .hiero”目录,但所有操作都是自动化的。

我要运行的代码由Nuke和Hiero提供(在示例目录中),我只是想不出该怎么做才能从程序中运行它。

为了解决此问题我该怎么办?

先感谢您。

最佳答案

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。要在Terminal 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 x退出pico编辑器

重启终端

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

printenv HIERO_PLUGIN_PATH


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

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

python - 在Hiero中运行Python插件-LMLPHP

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

python - 在Hiero中运行Python插件-LMLPHP

之后,您将在__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的~/.nuke文件中添加了两行。

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


我唯一能说的是:"it works"做与我相同的操作,它将对HIERO起作用。

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

在上传custom_guides.py脚本之前:

python - 在Hiero中运行Python插件-LMLPHP

上传custom_guides.py脚本后:

python - 在Hiero中运行Python插件-LMLPHP

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

python - 在Hiero中运行Python插件-LMLPHP

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

10-04 21:10