我写了一个 bash 脚本,它必须比较两个版本字符串来决定是否下载新版本。该测试依赖于执行 的 Python 脚本,它以apt.VersionCompare()
这种方式进行版本比较apt
。
#!/usr/bin/env python
import sys, apt
res = apt.VersionCompare(sys.argv[1], sys.argv[2])
if res < 0:
sys.exit(-1)
if res > 0:
sys.exit(1)
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
随着升级到 Ubuntu 14.4,这停止工作。
我尝试按照/sf/ask/347026011/更改脚本,如下所示:
#!/usr/bin/env python
import sys, apt_pkg
res = apt_pkg.version_compare(sys.argv[1], sys.argv[2])
if res < 0:
sys.exit(-1)
if res > 0:
sys.exit(1)
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
但这给了我 ValueError: _system not initialized
。如何解决,或者有没有更好的方法来比较版本apt
?
奇怪的是,当我从交互式 Python 提示符运行代码时,该代码有效。无论如何,这个错误报告指向了一个解决方案(?)1:
apt_pkg.init_system()
按照此处记录的方式添加调用(或也这样做import apt
):
#!/usr/bin/env python
import sys, apt_pkg
apt_pkg.init_system()
res = apt_pkg.version_compare(sys.argv[1], sys.argv[2])
if res < 0:
sys.exit(-1)
if res > 0:
sys.exit(1)
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
1显然,InitSystem
函数名称也发生了变化,从驼峰式改为使用下划线。
归档时间: |
|
查看次数: |
339 次 |
最近记录: |