-1

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

基本上我希望能够克隆我的项目并这样做:

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

帮助!

4

1 回答 1

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
于 2016-03-06T10:54:37.957 回答