我在从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保存在“ .nuke“文件夹并继续显示相同的错误。
最后,我试着调查安装过程并尝试分离Nuke和Hiero的文件夹,这可能会创建“.hiero”目录,但一切都是自动化的。
我要运行的代码由Nuke和Hiero(在示例目录中)提供,我只是无法弄清楚如何从程序中运行它。
我该怎么做才能解决这个问题?
提前谢谢。
答案 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.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&#39 {s} ~/.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)。