apt.VersionCompareを使用すると、「ValueError:_systemが初期化されていません」

apt.VersionCompareを使用すると、「ValueError:_systemが初期化されていません」

私は新しいバージョンをダウンロードするかどうかを決定するために2つのバージョン文字列を比較する必要がある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)

1InitSystem関数名もcamelCaseから下線を使用するように変更されました。

おすすめ記事