2018年4月16日 星期一

[OpenStack][DevStack] Devstack pip套件版號注意事項


最近在安裝pike版的devstack過程中,發現devstack怎都安裝不起來。然後從log發現pip會安裝到最近pypi.org上所最新所釋出的pip 10,於是發現了以下有趣的程式碼片段:

pip_version=$(python -c "import pip; \
print(pip.__version__.strip('.')[0])")

https://github.com/openstack-dev/devstack/blob/stable/pike/inc/python#L336

這個pip.__version__會經由strip('.')去掉字串頭尾的dot(.)然後印出版號,像是'9.x.y'。 這個版號字串在<10的話不會怎樣,但是在新版10的時候就會變成1,這樣會悲劇阿,導致整個安裝過程會爆炸。以下是小弟的測試過程:


>>> import pip
>>> pip.__version__
'9.0.3'
>>> pip.__version__.strip('.')
'9.0.3'
>>> pip.__version__.strip('.')[0]
'9'
>>> x='10.0.0'
>>> x[0]
'1'
>>> pip.__version__.split('.')[0]
'9'
>>> x.split('.')[0]
'10'
>>>  
所以應該是要用split('.')來切割,取得大版號才對啊(是否strip()跟split()會傻傻分不清楚<_._>)。正在討論是否要進行bug回報的部分,但看到社區已於新版修復,可以參考以下的連結

  2. https://github.com/openstack-dev/devstack/commit/f99d1771ba1882dfbb69186212a197edae3ef02c

沒有留言:

張貼留言