使用 apt.VersionCompare 时出现“ValueError:_system 未初始化”

使用 apt.VersionCompare 时出现“ValueError:_system 未初始化”

我编写了一个 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)

升级到 Ubuntu 14.4 后,这个问题就停止了。

我尝试更改以下脚本https://stackoverflow.com/questions/4957514/如下:

#!/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)

但这给了我 ValueError: _system not initialized。怎么解决,或者有没有更好的方法来比较版本apt

答案1

奇怪的是,当我从交互式 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)

1显然InitSystem函数名称也发生了变化,从驼峰命名法改为使用下划线。

相关内容