前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rez:Ephemeral packages

rez:Ephemeral packages

作者头像
用户9897904
发布2022-07-14 18:31:44
5620
发布2022-07-14 18:31:44
举报
文章被收录于专栏:PipelinePipeline

大家晚上好

好久没更新公众号了

今天给大家分享的是rez-2.71.0以后增加的新功能

Ephemeral packages (临时包)

那么什么是临时包呢?

临时包本身不是实际存在的包

临时包名称始终以点(.)开头

它可以像其他正常包一样可以用在包的依赖和变体中

比如

在解析过程中,临时文件将像真实的包一样运行,

它们也会被解析相交和冲突

冲突解析示例

临时包不像其他正常的包一样可以通过定义package.py中的commands去设置定义一些逻辑和影响运行时

但是设置了一些环境变量:

REZ_USED_EPH_RESOLVE 列出所有已解决的临时请求;

REZ_EPH_(PKG)_REQUEST为每个已解析的临时文件设置

这里,(PKG)是临时包的名称,大写,用下划线代替 点并删除前导点。

比如

代码语言:javascript
复制
]$ 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函数来检查它,如下所示:

代码语言:javascript
复制
# 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函数

如果键存在,它将返回一个完整的请求字符串。

因此,默认值也应该是完整的请求字符串

为什么需要临时包

临时包可以作为类似于命令的参数去使用

比如

代码语言:javascript
复制
rez env project_setup .project-jed maya -- maya
代码语言:javascript
复制
rez env project_setup .project-twe maya -- maya

上面的例子可以允许我们根据不同项目的context去运行maya

里面包含了不同的项目设置

比如我们创建了一个名叫project_setup的包

里面的代码如下

然后我们运行rez env 去测试

这样我们就可以通过临时包去传递参数然后去读取不同的项目设置了

大家可以根据自己的实际需求去组合使用

我这边也就抛砖引玉

好了今天的分享就到这了,欢迎大家点赞转发

我们下期再见

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pipeline 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档