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


9

我编写了一个bash脚本,该脚本必须比较两个版本字符串来决定是否下载新版本。该测试依赖于Python脚本dos 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,此功能停止工作。

我尝试按照/programming/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

Answers:


6

奇怪的是,当我从交互式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函数名也已更改,从CamelCase改为使用下划线。


import apt在导入之前,您是否偶然在交互式提示下执行了apt_pkg?那会解释事情,因为这也会初始化模块。
Anthon 2014年

@Anthon我检查了我的python3历史记录,看起来像这样。但是现在在python shell中我得到了这个错误。Oo
Muru
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.