apt.VersionCompare를 사용할 때“ValueError : _system not initialized” < 0:

새 버전을 다운로드할지 여부를 결정하기 위해 두 버전 문자열을 비교 해야하는 bash 스크립트를 작성했습니다. 시험은 수행하는 파이썬 스크립트에 의존 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이 있습니까?



답변

대화 형 Python 프롬프트에서 코드를 실행할 때 이상하게 코드가 작동합니다. 어쨌든이 버그 보고서 는 solution (?) 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)

하나는 분명히 InitSystem함수 이름은 낙타 표기법에서 밑줄을 사용하여도 변경되었습니다.


답변