大家晚上好
好久没更新公众号了
今天给大家分享的是rez-2.71.0以后增加的新功能
Ephemeral packages (临时包)
那么什么是临时包呢?
临时包本身不是实际存在的包
临时包名称始终以点(.)开头
它可以像其他正常包一样可以用在包的依赖和变体中
比如
在解析过程中,临时文件将像真实的包一样运行,
它们也会被解析相交和冲突
冲突解析示例
临时包不像其他正常的包一样可以通过定义package.py中的commands去设置定义一些逻辑和影响运行时
但是设置了一些环境变量:
REZ_USED_EPH_RESOLVE 列出所有已解决的临时请求;
REZ_EPH_(PKG)_REQUEST为每个已解析的临时文件设置
这里,(PKG)是临时包的名称,大写,用下划线代替 点并删除前导点。
比如
]$ rez-env python .foo-1 .bah-2
...
]$ echo %REZ_EPH_FOO_REQUEST%
1
]$ echo %REZ_USED_EPH_RESOLVE%
.foo-1 .bah-2
为了让包检查运行时中存在的ephemerals,rez提供了一个ephemerals对象,类似于解析对象。您通常会使用 intersects函数来检查它,如下所示:
# in package.py
def commands()
if intersects(ephemerals.get_range('enable_tracking', '0'), '1'):
env.TRACKING_ENABLED = 1
在此示例中
TRACKING_ENABLED如果 解析中存在
诸如.enable_tracking-1(或.enable_tracking-1.2+等)
之类的临时变量,则给定的包将设置环境变量。
请注意,.在查询ephemerals对象时,前导是隐含的,不包括在内。
因为ephemerals是一个类似 dict 的对象
所以它有一个get函数
如果键存在,它将返回一个完整的请求字符串。
因此,默认值也应该是完整的请求字符串
为什么需要临时包
临时包可以作为类似于命令的参数去使用
比如
rez env project_setup .project-jed maya -- maya
rez env project_setup .project-twe maya -- maya
上面的例子可以允许我们根据不同项目的context去运行maya
里面包含了不同的项目设置
比如我们创建了一个名叫project_setup的包
里面的代码如下
然后我们运行rez env 去测试
这样我们就可以通过临时包去传递参数然后去读取不同的项目设置了
大家可以根据自己的实际需求去组合使用
我这边也就抛砖引玉
好了今天的分享就到这了,欢迎大家点赞转发
我们下期再见