Rez中文文档01 Home
发表于更新于
字数总计:614阅读时长:2分钟阅读量: 长沙
DocrezRez中文文档01 Home
lingyun什么是Rez
Rez是一个跨平台程序包管理器,它可以给程序配置独立的环境。
与其它程序包环境管理不同的是,所有的程序包的安装都在一个中央统一的位置,
每个独立环境只是引用了这些包。所以它的环境配置是轻量级的,
尽管有几百个包,通常也只需要几秒就可以进行配置。
基本原理
Rez获取一个包的请求列表,然后构建目标环境,并解决所有包的依赖问题。
支持任何软件包。(包括Python)
每个软件包都有一个简洁的定义文件(package.py),
这个文件用于定义其依赖项,命令,以及其它meatadata信息。
一个python的软件包定义文件:
1 2 3 4 5 6 7 8 9 10 11 12
| name = "requests"
version = "2.8.1"
authors = ["Kenneth Reitz"]
requires = [ "python-2.7+" ]
def commands(): env.PYTHONPATH.append("{root}/python")
|
上述文件所表达的含义是,此软件包需要python2.7或更高版本。
使用的时候,python的子目录会添加到 PYTHONPATH 环境变量中。
使用rez API或rez-env创建环境时,算法会解析并跟踪一个包所需依赖包的列表。
从而让Rez能够在几秒钟配置包含数百个软件包的环境。
这个依赖包的列表也可以保存在一个文件中,用于以后构建相同的环境。
例子
使用rez-env工具创建一个简单的环境(要求requests2.2+, python2.6,pymongo小于2.7)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ]$ 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
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
命令。
1 2 3 4 5
| ]$ rez-env houdini-12.5+ -- hescape -h Usage: hescape [-foreground] [-s editor] [filename ...] -h: output this usage message -s: specify starting desktop by name -foreground: starts process in foreground
|
也可以通过API来进行创建:
1 2 3 4 5 6 7 8 9
| import subprocess from rez.resolved_context import ResolvedContext
r = ResolvedContext(["houdini-12.5+", "houdini-0+<13", "java", "!java-1.8+"]) p = r.execute_shell(command='which hescape', stdout=subprocess.PIPE) out, err = p.communicate()
print out >>> '/software/ext/houdini/12.5.562/bin/hescape'
|