跨平台封装系统,可以构建和安装多个版本的包,并在运行时动态配置已解析的环境。

rez的Python项目详细描述


简介

rez是一个跨平台、lgpl许可的python库和一组实用程序,用于构建和安装包,并在运行时解决包含这些包的环境,从而避免版本冲突。主要工具有:

  • rez env-创建一个配置的shell,其中包含一组请求的包。支持bashtcsh,并模拟本机shell的启动序列。
  • {STR 1 } $ Rez Bug -构建任何类型的包(Python、C++等),并将其安装在本地进行测试。支持cmake
  • rez release-构建并集中部署一个包,并更新相关的源代码管理存储库(创建标记等)。支持gitmercurialsvn

与许多打包系统不同,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!

文档

待办事项

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java开关大小写不返回字符串   java消除Pascals三角形上的前导空格   当用户更改单元格时,仅当用户   调试时,java“this”在片段中不可用   JavaJSFDataTable“优雅”地编辑行内容   java Javafx组合框自动完成返回错误   数组如何在java中将数据从firebase加载到arraylist   java的html问题。木卫一。在浏览器上打印多个空格时使用PrintWriter   java如何在后台下载文件,而不考虑应用程序的状态?   java如何在Eclipse中设置实例断点?   java N1QL二级索引不使用参数化IN子句   多线程在Java中干净地停止线程侦听serversocket   java如何在selenium服务器上检查测试问题   java Hibernate查询。executeUpdate()执行许多查询   java如何从Jenkins文件传递多个参数,如env、凭证、cucumber标记   java保护从子类的子类访问成员