Apt.VersionCompare kullanılırken “ValueError: _system başlatılmadı”


9

Yeni sürümü indirmeye karar vermek için iki sürüm dizesini karşılaştırmak zorunda olan bir bash betiği yazdım. Test apt.VersionCompare(), sürüm karşılaştırmasını olduğu gibi yapan bir Python betiğine dayanır 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 sürümüne yükseltme ile bu çalışmayı durdurdu.

Aşağıdaki gibi /programming/4957514/ aşağıdaki komut dosyasını değiştirmeye çalıştım :

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

ama bu bana veriyor ValueError: _system not initialized. Nasıl çözülür veya sürümleri karşılaştırmanın daha iyi bir yolu aptvar mı?

Yanıtlar:


6

Garip bir şekilde etkileşimli bir Python isteminden çalıştırdığınızda kod çalışır. Her halükarda, bu hata raporu bir çözüme (?) 1 işaret eder :

Buradaapt_pkg.init_system() belgelendiği şekilde bir çağrı ekleyin (veya yapın ):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)

1 Görünüşe göre InitSystemişlev adı da CamelCase'den altçizgileri kullanmaya değişti.


import aptiçe aktarmadan önce etkileşimli istemde bir yaptınız mı apt_pkg? Bu, modülü de başlatan şeyleri açıklar.
Anthon

@Anthon Python3 geçmişimi kontrol ettim, öyle görünmüyor. Ama şimdi bir python kabuğunda bu hatayı alıyorum. Oo
muru
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.