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)

1InitSystem 함수 이름도 camelCase에서 밑줄 사용으로 변경되었습니다 .

관련 정보