Turns out pex
already does git describe
on build. The result it stores in a PEX-INFO
file in the root of the .pex
file. So to read it, I did this:
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']
This is good enough IMO, but there are also drawbacks. If somebody has an improved answer I'm prepared to switch to that one as the accepted one.
Outages with this one:
- Relies on relative paths to locate
PEX-INFO
, would be better if there was some kind of API call for this.
- No way to customize how the version number is computed; I'd like to do
git describe --dirty
for example.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…