"ValueError: _system आरंभीकृत नहीं" जब apt.VersionCompare का उपयोग कर रहा है


9

मैंने एक बैश स्क्रिप्ट लिखी है जिसे नए संस्करण को डाउनलोड करने या नहीं करने के निर्णय के लिए दो संस्करण तार की तुलना करनी है। परीक्षण पायथन स्क्रिप्ट पर निर्भर करता है 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)

उबंटू 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

जब मैं इसे एक इंटरैक्टिव पायथन प्रॉम्प्ट से चलाता हूं तो अजीब तरह से कोड काम करता है। किसी भी दर पर, यह बग रिपोर्ट एक समाधान (?) 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)

1 जाहिर तौर पर InitSystemफंक्शन का नाम भी बदल गया है, कैमलकेज़ से लेकर अंडरस्कोर का उपयोग करना।


क्या आपने import aptआयात करने से पहले इंटरएक्टिव प्रॉम्प्ट पर क्या किया apt_pkg? यह चीजों की व्याख्या करेगा, जैसा कि मॉड्यूल को भी इनिशियलाइज़ करता है।
एंथन

@Anthon मैंने अपने python3 इतिहास की जाँच की, ऐसा नहीं लगता। लेकिन अब एक अजगर के खोल में मुझे वह त्रुटि मिलती है। Oo
muru
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.