我在从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.py
或xxxx.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
脚本(找到了here)。我将
custom_guides.py
放在~/.nuke/Python/Startup
目录中,然后在位于init.py
目录中的NUKE的~/.nuke
文件中添加了两行。import nuke
nuke.pluginAddPath("./Python/Startup")
我唯一能说的是:
"it works"
做与我相同的操作,它将对HIERO起作用。查看
safe_zone
和masking_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
脚本(找到了here)。