“ValueError: _sistema não inicializado” ao usar o apt.VersionCompare

9

Eu escrevi um script bash que tem que comparar duas strings de versão para decidir baixar a nova versão ou não. O teste baseia-se em um script Python que faz o apt.VersionCompare() , que faz a comparação de versões da mesma forma que o 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)

Com a atualização para o Ubuntu 14.4, isso parou de funcionar.

Tentei alterar o script seguindo o link abaixo:

#!/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)

mas isso me dá ValueError: _system not initialized . Como resolver ou existe uma maneira melhor de comparar versões como apt ?

    
por Christa 09.12.2014 / 14:55

1 resposta

6

Estranhamente, o código funciona quando eu o executo em um prompt interativo do Python. De qualquer forma, este relatório de erros aponta para uma solução (?) 1 :

Adicione uma chamada para apt_pkg.init_system() conforme documentado aqui (ou import apt também):

#!/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 Aparentemente, o nome da função InitSystem também mudou, do CamelCase ao uso de sublinhados.

    
por 09.12.2014 / 15:11

Tags