跨平台封装系统,可以构建和安装多个版本的包,并在运行时动态配置已解析的环境。
rez的Python项目详细描述
简介
rez是一个跨平台、lgpl许可的python库和一组实用程序,用于构建和安装包,并在运行时解决包含这些包的环境,从而避免版本冲突。主要工具有:
- rez env-创建一个配置的shell,其中包含一组请求的包。支持bash和tcsh,并模拟本机shell的启动序列。
- {STR 1 } $ Rez Bug -构建任何类型的包(Python、C++等),并将其安装在本地进行测试。支持cmake。
- rez release-构建并集中部署一个包,并更新相关的源代码管理存储库(创建标记等)。支持git、mercurial和svn。
与许多打包系统不同,rez能够安装相同软件包的许多不同版本。使用rez env工具时,将动态创建一个新环境,其中包含所请求的包。rez在运行时解析环境,而不是在安装时解析环境-但是,您可以将解析存储到磁盘,并在以后重用它。
下面是一个示例,它将用户放入包含所请求包的解析shell中:
]$ rez-env requests-2.2+ python-2.6 'pymongo-0+<2.7' You are now in a rez-configured environment. resolved by ajohns@nn188.somewhere.com, on Wed Feb 26 15:56:20 2014, using Rez v2.0.0 implicit packages: platform-linux arch-x86_64 requested packages: requests-2.2+ python-2.6 pymongo-0+<2.7 resolved packages: python-2.6.8 /software/ext/python/2.6.8 platform-linux /software/ext/platform/linux requests-2.2.1 /software/ext/requests/2.2.1/python-2.6 pymongo-2.6.3 /software/ext/pymongo/2.6.3 arch-x86_64 /software/ext/arch/x86_64 > ]$ _
下面是一个示例,它创建了一个包含“houdini”版本12.5或更高版本包的环境,并在该环境中运行命令“hescape-h”:
]$ rez-env -c 'hescape -h' houdini-12.5+ Usage: hescape [-foreground] [-s editor] [filename ...] -h: output this usage message -f: force the use of asset definitions in OTL files on the command line -s: specify starting desktop by name -foreground: starts process in foreground
也可以通过编程方式创建解析环境:
>>> from rez.resolved_context import ResolvedContext >>> >>> r = ResolvedContext(["houdini-12.5+", "houdini-0+<13", "java", "!java-1.8+"]) >>> >>> r.print_info() resolved by ajohns@nn188.somewhere.com, on Wed Feb 26 13:03:30 2014, using Rez v2.0.0 implicit packages: platform-linux arch-x86_64 requested packages: houdini-12.5+ houdini-0+<13 java resolved packages: java-1.7.21 /software/ext/java/1.7.21 platform-linux /software/ext/platform/linux arch-x86_64 /software/ext/arch/x86_64 houdini-12.5.562 /software/ext/houdini/12.5.562 >>> >>> import subprocess >>> p = r.execute_shell(command='which hescape', stdout=subprocess.PIPE) >>> stdout,stderr = p.communicate() >>> >>> print stdout '/software/ext/houdini/12.5.562/bin/hescape'
功能
- 支持Linux和OSX;
- 允许快速高效的构建安装测试周期;
- 创建类型为:bash、tcsh、other(shell可以作为插件添加);
- 包含支持git、mercurial和svn(作为插件)的部署系统;
- 环境解析可以保存到磁盘并在以后重用(有点像virtualenv);
- 高度可插拔,支持五种不同的插件类型,从添加新的外壳类型到添加新的构建系统;
- 包含版本解析算法,用于避免版本冲突;
- 在渲染的点图中可视化解析的环境;
- 包位于搜索路径中,因此可以将不同的包部署到不同的位置;
- 支持字母数字版本号;
- 具有强大的版本要求语法,能够描述任何版本范围,以及用于拒绝版本范围的冲突运算符;
- 包“variants”-定义同一包版本的不同风格的方法,例如为宿主应用程序的多个版本构建的插件;
- 自定义释放挂钩(如释放后操作)可以作为插件添加;
- 具有时间锁定功能,允许重新创建旧的解析(忽略较新的包);
- 包定义是一个简洁的文件;
- 包使用一个专用的python api,以一种与平台和shell无关的方式定义它们对环境的影响(添加到path等)
- 有一个基于memcached的缓存系统,用于缓存环境解析。
安装
要安装rez,只需:
pip install rez
或者,从源安装:
python setup.py install
以确保其正常工作:
]$ rez-env -c 'hello_world' hello_world Hello Rez World!
文档
待办事项