sys.modules
অভিধানে মডিউল নামের পরীক্ষা করুন :
import sys
modulename = 'datetime'
if modulename not in sys.modules:
print 'You have not imported the {} module'.format(modulename)
ডকুমেন্টেশন থেকে:
এটি একটি অভিধান যা মডিউলগুলিতে মডিউলগুলির মানচিত্র তৈরি করে যা ইতিমধ্যে লোড হয়ে গেছে।
নোট করুন যে একটি import
বিবৃতি দুটি কাজ করে:
- যদি মডিউলটি আগে কখনও আমদানি করা হয়নি (== উপস্থিত না থাকে
sys.modules
), তবে এটি লোড এবং এতে যুক্ত হয় sys.modules
।
- মডিউল অবজেক্টকে বা মডিউল নেমস্পেসের সদস্য হওয়া অবজেক্টগুলিকে রেফারেন্স করে বর্তমান নেমস্পেসে 1 বা আরও বেশি নাম বেঁধে রাখুন।
modulename not in sys.modules
পদক্ষেপ 1 স্থান নিয়েছে কিনা এক্সপ্রেশন পরীক্ষা করে। পদক্ষেপ 2 এর ফলাফলের জন্য পরীক্ষার জন্য জেনে রাখা উচিত যে সঠিক অবয়বটি কীভাবে import
ব্যবহৃত হয়েছিল কারণ তারা বিভিন্ন বস্তুর রেফারেন্সের জন্য বিভিন্ন নাম নির্ধারণ করে:
import modulename
সেট modulename = sys.modules['modulename']
import packagename.nestedmodule
সেট packagename = sys.modules['packagename']
(আপনি কতগুলি অ্যাডিয়োনাল স্তর যুক্ত করেন তা নয়)
import modulename as altname
সেট altname = sys.module['modulename']
import packagename.nestedmodule as altname
সেট altname = sys.modules['packagename.nestedmodule']
from somemodule import objectname
সেট objectname = sys.modules['somemodule'].objectname
from packagename import nestedmodulename
সেট nestedmodulename = sys.modules['packagename.nestedmodulename']
(কেবলমাত্র যখন কোন নামে বস্তুর ছিল nestedmodulename
মধ্যে packagename
এই আমদানি আগে নামস্থান, নেস্টেড মডিউলের জন্য একটি অতিরিক্ত নাম পিতা বা মাতা প্যাকেজ নামস্থান এই সময়ে যোগ করা হয়)
from somemodule import objectname as altname
সেট altname = sys.modules['somemodule'].objectname
from packagename import nestedmodulename as altname
সেট altname = sys.modules['packagename.nestedmodulename']
(কেবলমাত্র যখন কোন নামে বস্তুর ছিল nestedmodulename
মধ্যে packagename
এই আমদানি আগে নামস্থান, নেস্টেড মডিউলের জন্য একটি অতিরিক্ত নাম পিতা বা মাতা প্যাকেজ নামস্থান এই সময়ে যোগ করা হয়)
আমদানি করা অবজেক্টটি যে নামটিতে আবদ্ধ ছিল সেই নামটি যদি প্রদত্ত নেমস্পেসে উপস্থিত থাকে তবে আপনি পরীক্ষা করতে পারেন:
'importedname' in dir()
'importedname' in globals()
'importedname' in globals(sys.modules['somemodule'])
এটি কেবল আপনাকে নামটি উপস্থিত রয়েছে (আবদ্ধ হয়েছে) সম্পর্কে বলবে, যদি না এটি মডিউলটির কোনও নির্দিষ্ট মডিউল বা বস্তুকে বোঝায়। আপনি যদি সেই অবজেক্টটি পরীক্ষা করতে পারেন বা এটি পরীক্ষা করতে পারেন তবে এটি যদি উপস্থিত থাকে তবে একই জিনিস sys.modules
, যদি আপনার নামটি পুরোপুরি পুরোপুরি সেট করা শুরু হয় তবে এটি রক্ষণ করতে হবে।
raise SystemError()
আপনি যে মডিউলটি আমদানি করতে চান না তার উপরে কেবল (বা আপনার পছন্দের অন্যান্য ব্যতিক্রম) রাখুন। আপনি যদি না আসলে কোথাও আমদানি করতে, আপনার প্রোগ্রাম একটি ট্রেসব্যাক করে প্রস্থান নিক্ষেপ করা হবে।