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.