- 使用Pants构建的Python程序中的--version支持

时间:2016-03-02 19:26:32

标签: python pants

如何让Pantsgit describe的输出存储在.pex文件的某处,以便我可以从我正在编写的Python代码中访问它?

基本上我希望能够克隆my project并执行此操作:

  1. ./pants binary px
  2. 将结果dist/px.pex分发给某人
  3. 当我在第一步中构建px.pex --version时,某人应该能够git describe并打印出.pex所说的内容。
  4. 帮助!

1 个答案:

答案 0 :(得分:0)

结果pex在构建时已经git describe。结果存储在PEX-INFO文件根目录的.pex文件中。所以要阅读它,我这样做了:

def get_version():
    """Extract version string from PEX-INFO file"""
    my_pex_name = os.path.dirname(__file__)
    zip = zipfile.ZipFile(my_pex_name)
    with zip.open("PEX-INFO") as pex_info:
        return json.load(pex_info)['build_properties']['tag']

这足够IMO,但也有缺点。如果有人有一个改进的答案,我准备切换到那个作为被接受的答案。

这次中断:

  • 依赖相对路径来定位PEX-INFO,如果有某种API调用会更好。
  • 无法自定义版本号的计算方式;我想以git describe --dirty为例。