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


9

새 버전을 다운로드할지 여부를 결정하기 위해 두 버전 문자열을 비교 해야하는 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이 있습니까?

답변:


6

대화 형 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함수 이름은 낙타 표기법에서 밑줄을 사용하여도 변경되었습니다.


import apt가져 오기 전에 대화식 프롬프트에서 작업을 수행 apt_pkg했습니까? 그것은 모듈을 초기화 할 때도 설명 할 것입니다.
Anthon

@Anthon python3 기록을 확인했지만 모양이 다릅니다. 그러나 이제 파이썬 쉘에서 그 오류가 발생합니다. Oo
muru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.