কম্পিউটার

পাইথনে আমদানির বাস্তবায়ন (importlib)


importlib প্যাকেজ পাইথন সোর্স কোডে ইম্পোর্ট স্টেটমেন্টের বাস্তবায়ন প্রদান করে যে কোনো পাইথন ইন্টারপ্রেটারকে বহনযোগ্য। এটি এমন একটি বাস্তবায়নও প্রদান করে যা পাইথন ব্যতীত অন্য একটি প্রোগ্রামিং ভাষায় বাস্তবায়িত একটির চেয়ে বোঝা সহজ৷

এই প্যাকেজটি আমদানি বাস্তবায়নের জন্য উপাদানগুলিকেও প্রকাশ করে, যা ব্যবহারকারীদের আমদানি প্রক্রিয়ায় অংশগ্রহণের জন্য তাদের নিজস্ব কাস্টম বস্তু (আমদানিকারী হিসাবে পরিচিত) তৈরি করা সহজ করে তোলে৷

importlib প্যাকেজের import_module()

নামে একটি গুরুত্বপূর্ণ ফাংশন রয়েছে

import_module():

এই ফাংশনটি প্রোগ্রামগতভাবে একটি মডিউল আমদানি করে। মডিউলের নাম হল ফাংশনের প্রথম প্যারামিটার। ঐচ্ছিক দ্বিতীয় প্যারামিটার প্যাকেজের নাম নির্দিষ্ট করে যদি থাকে।

invalidate_caches():

এই ফাংশন ফাইন্ডারের অভ্যন্তরীণ ক্যাশেগুলিকে বাতিল করে। এই ফাংশনটি কল করা উচিত যদি কোনও মডিউল তৈরি/ইনস্টল করা হয় যখন আপনার প্রোগ্রামটি চলছে এমন গ্যারান্টি দেওয়ার জন্য যে সমস্ত অনুসন্ধানকারী নতুন মডিউলটির অস্তিত্ব লক্ষ্য করবে৷

রিলোড():

এই ফাংশনটি পূর্বে আমদানি করা মডিউল পুনরায় লোড করে। আপনি যদি একটি বাহ্যিক সম্পাদক ব্যবহার করে মডিউল সোর্স ফাইলটি সম্পাদনা করেন এবং পাইথন ইন্টারপ্রেটার না রেখে নতুন সংস্করণটি চেষ্টা করতে চান তবে এটি কার্যকর।

উদাহরণ:

নিচের মত একই কোড সহ module1.py এবং module2.py নামে দুটি পাইথন স্ক্রিপ্ট তৈরি করুন:

#module1
def main():
   print ('module imported', __name__)
   return
if __name__=='__main__':
   main()

আমরা এখন importlib প্যাকেজ ব্যবহার করে এই মডিউলগুলি গতিশীলভাবে আমদানি করি৷

>>> import importlib
>>> mod=importlib.import_module('module1')
>>> mod.__name__
'module1'
>>> mod=importlib.import_module('module2')
>>> mod.__name__
'module2'
>>> mod.main()
module imported module2
>>>

importlib প্যাকেজে নিম্নলিখিত সাবমডিউল রয়েছে:

importlib.abc

এই মডিউলটিতে আমদানি দ্বারা ব্যবহৃত সমস্ত মূল বিমূর্ত বেস ক্লাস রয়েছে। মূল বিমূর্ত বেস ক্লাসের কিছু সাবক্লাসও কোর এবিসি বাস্তবায়নে সাহায্য করার জন্য প্রদান করা হয়েছে

importlib.resources

এই মডিউলটি প্যাকেজগুলির মধ্যে সংস্থানগুলিতে অ্যাক্সেস প্রদানের জন্য পাইথনের আমদানি সিস্টেমকে সুবিধা দেয়।

importlib.machinery

এই মডিউলটিতে বিভিন্ন বস্তু রয়েছে যা মডিউলগুলি খুঁজে পেতে এবং লোড করতে আমদানি করতে সহায়তা করে৷

importlib.util

এই মডিউলটিতে আমদানিকারকদের জন্য ইউটিলিটি কোড রয়েছে। এটিতে বিভিন্ন বস্তু রয়েছে যা একটি আমদানিকারক নির্মাণে সহায়তা করে। এতে নিম্নলিখিত গুরুত্বপূর্ণ ফাংশন সংজ্ঞায়িত করা হয়েছে।

find_spec():

এই ফাংশনটি নির্দিষ্ট প্যাকেজের নামের সাথে সম্পর্কিত একটি মডিউলের স্পেসিফিকেশন খুঁজে পায়। যদি নামটি একটি সাবমডিউলের জন্য হয় (একটি বিন্দু রয়েছে), তাহলে মূল মডিউলটি স্বয়ংক্রিয়ভাবে আমদানি করা হয়। নাম এবং প্যাকেজ import_module().

এর মতোই কাজ করে

module_from_spec(spec)

spec এবং spec.loader.create_module.

এর উপর ভিত্তি করে একটি নতুন মডিউল তৈরি করুন

উদাহরণ:

import importlib.util
def check_module(mod):
   spec = importlib.util.find_spec(mod)
   if spec is None:
      print('Module: {} not found'.format(mod))
      return None
   else:
      print('Module: {} can be imported!'.format(mod))
      return spec
   def import_module(spec):
      mod = importlib.util.module_from_spec(spec)
      spec.loader.exec_module(mod)
      return mod
if __name__ == '__main__':
   spec = check_module('notamodule')
   spec = check_module('module1')
   if spec:
      mod = import_module(spec)
      mod.main()

আউটপুট:

Module: notamodule not found
Module: module1 can be imported!
module imported module1

  1. পাইথন CSV মডিউল:ধাপে ধাপে নির্দেশিকা

  2. যা পাইথনের দ্রুততম বাস্তবায়ন

  3. পাইথনে পাইডক মডিউল ব্যবহার করে ডকুমেন্টেশন জেনারেশন

  4. পাইথনে আমদানি বিবৃতি ব্যবহার কি?