Apt.VersionCompare ব্যবহার করার সময় "ValueError: _ সিস্টেম আরম্ভ হয় না"


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? এটি বিষয়গুলি ব্যাখ্যা করবে, কারণ এটি মডিউলটিকেও আরম্ভ করে।
অ্যান্থন

@ অ্যান্টন আমি আমার পাইথন 3 ইতিহাস পরীক্ষা করে দেখলাম, এর মতো দেখায় না। তবে এখন পাইথন শেলটিতে আমি ত্রুটি পেয়েছি। ওও
মুরু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.