有没有更好的方法在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的解决方案。
答案 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,则引发断言错误