确保某个软件包的版本比版本x更新

时间:2016-08-11 13:34:22

标签: python import

有没有更好的方法在python中确保脚本只运行比x更新的模块版本?

import somemodule
assert int(somemodule.__version__[0]) > 1 # would enforce a version of at least 2.0

在Perl中,人们可以这样做:

use somemodule 2.0

我想这样做是因为我需要一个比Debian存储库提供的版本更新的版本,并且希望确保用户通过pip安装了lib。

关键是,脚本将使用较旧的包运行而没有错误,但由于旧的Debian模块版本中存在未修复的错误而产生错误的结果。

PS:我需要一个适用于python2(2.6 / 2.7)和python3的解决方案。

1 个答案:

答案 0 :(得分:0)

为什么你真的必须转换为int。 我知道这不是pythonic的做法,但它确实有效

>>> assert('0.0.8' > '1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>> assert('0.0.8' > '0')
>>> assert('0.0.8' > '0.0.7')
>>> assert('0.0.8' > '0.0.7.5')
>>> assert('0.0.8' > '0.0.7.5.8')
>>> assert('0.0.8' > '0.0.8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>> assert('0.0.8' > '0.0.8.1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
>>>

我的意思是assert(somemodule.__version__ > '1')如果安装的版本小于1,则引发断言错误