最近在安裝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回報的部分,但看到社區已於新版修復,可以參考以下的連結
|
沒有留言:
張貼留言