“ ValueError: _system ไม่ได้เริ่มต้น” เมื่อใช้ apt.VersionCompare


9

ฉันเขียนสคริปต์ทุบตีที่มีการเปรียบเทียบสองสายรุ่นเพื่อตัดสินใจที่จะดาวน์โหลดรุ่นใหม่หรือไม่ การทดสอบนั้นใช้สคริปต์ 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 สิ่งนี้หยุดทำงาน

ฉันพยายามเปลี่ยนสคริปต์ตาม/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 แบบโต้ตอบ รายงานข้อผิดพลาดนี้จะชี้ไปที่วิธีแก้ปัญหา (?) 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ชื่อฟังก์ชั่นเปลี่ยนไปเช่นกันจาก CamelCase เป็นการใช้เครื่องหมายขีดล่าง


คุณเคยทำสิ่งimport aptที่พร้อมท์แบบโต้ตอบก่อนที่จะนำเข้าapt_pkgหรือไม่ ที่จะอธิบายสิ่งต่าง ๆ เช่นเดียวกับที่เริ่มต้นโมดูลเช่นกัน
Anthon

@ ทันใดที่ฉันตรวจสอบประวัติ python3 ของฉันดูไม่เหมือน แต่ตอนนี้ในกระสุนหลามฉันได้รับข้อผิดพลาดนั้น Oo
muru
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.