আমি পাইথনের রানপি মডিউলটির রক্ষণাবেক্ষণকারী এবং বর্তমান আমদানি সিস্টেমের অন্যতম রক্ষণাবেক্ষণকারী। যদিও আমাদের আমদানি ব্যবস্থাটি চিত্তাকর্ষকভাবে নমনীয়, আমি কয়েকটা টুইট না করেই এটিকে পাইকারি গ্রহণের বিরুদ্ধে পরামর্শ দেব - পিছনের সামঞ্জস্যতার উদ্বেগের কারণে এমন কিছু গুচ্ছ রয়েছে যা অন্যথায় হওয়া দরকারের চেয়ে আরও বিশ্রী k
পাইথনের পিইপি 302 এর সাথে যে জিনিসটি আঘাত করেছে তা হ'ল মূল আমদানি সিস্টেমটিকে ব্যবহারের জন্য রূপান্তর করতে আমাদের কতক্ষণ সময় লেগেছে। এক দশকের আরও ভাল অংশের জন্য, আমদানি হুকগুলির সাথে জটিল যে কোনও কিছু করতে তিনি দুটি টুকরো বাস্তবায়নে আটকে ছিলেন: একটি হ্যান্ডলিং পিইপি 302 কমপ্লায়েন্ট লোডার (যেমন জিপ আমদানি), এবং দ্বিতীয়টি স্ট্যান্ডার্ড ফাইল সিস্টেম ভিত্তিক আমদানি প্রক্রিয়া পরিচালনা করে। এটি কেবল আসন্ন 3.3 এর মধ্যে রয়েছে যে পিইপি 302 লোডারগুলি পরিচালনা করে স্ট্যান্ডার্ড ফাইল সিস্টেম আমদানি ব্যবস্থার মাধ্যমে আমদানি করা মডিউলগুলি পরিচালনা করারও যত্ন নেবে। যদি আপনি সম্ভবত এটি এড়াতে পারেন তবে সেই ভুলটির পুনরাবৃত্তি না করার চেষ্টা করুন।
পিইপি 420 (পাইথন ৩.৩-এর জন্য বাস্তবায়িত) প্রোটোকলে কিছু সংযোজন করে যা আমদানিকারকদের নামস্থান প্যাকেজগুলির অংশগুলি অবদান রাখতে দেয়। এটি ফাইন্ডার এপিআই সংজ্ঞায় নামকরণের সমস্যাও সমাধান করে (কার্যকরভাবে "Find_module" আরও সঠিক "find_loader" এর সাথে প্রতিস্থাপন করে)। এই আশা করা উচিত যে 3.3rc1 এর কয়েক সপ্তাহের মধ্যে প্রায় 3.3rc1 ঘূর্ণায়মান হওয়া অবধি সমস্ত ভাষা স্পষ্টভাবে নথিভুক্ত করা উচিত।
আর একটি উল্লেখযোগ্য সমস্যা হ'ল বিশেষভাবে পিইপি 302 নথিভুক্ত পদ্ধতির গ্লোবাল স্টেটের প্রক্রিয়া অনেক বেশি। আমাদের সেই পথে অনুসরণ করবেন না - আরও সুসংগত অবজেক্ট মডেলে রাজ্যটিকে ঘিরে রাখার চেষ্টা করুন যাতে অন্য মডিউলগুলি বেছে বেছে আমদানি করা কিছুটা সহজ হয় (সি এক্সটেনশন মডিউলগুলি এ জাতীয় কোনও এনক্যাপসুলেশনকে পুরোপুরি কার্যকর করার পক্ষে নিষেধ, তবে এমনকি কিছু স্তর এনক্যাপসুলেশন) সহায়ক হতে পারে)।
পিইপি 406 (http://www.python.org/dev/peps/pep-0406/) উন্নত রাষ্ট্রীয় এনক্যাপসুলেশনের সাথে পাইথনের পদ্ধতির সম্ভাব্য পিছনের দিকে সামঞ্জস্যপূর্ণ বিবর্তন নিয়ে আলোচনা করেছে। যদিও আপনার শুরু থেকেই কোনও এনপ্যাপুলেটেড স্টেট মডেল রয়েছে, তবে আপনি সেই অনুযায়ী আপনার এপিআইগুলি সংজ্ঞায়িত করতে পারেন এবং আমদানিকারক এবং লোডারদের বিশ্বব্যাপী অবস্থানে অ্যাক্সেস না করা এড়াতে পারেন (পরিবর্তে সক্রিয় ইঞ্জিনের একটি রেফারেন্স পাস করে)।
পিইপি 302-তে অন্য একটি অনুপস্থিত অংশটি হ'ল আমদানিকারকের দ্বারা সরবরাহকারী মডিউলগুলির জন্য একজন ইমপোর্টারকে জিজ্ঞাসা করার ক্ষমতা (ডকাস্ট্রিংগুলি নিষ্ক্রিয় করার জন্য হ'ল ইউটিলিটিস এবং স্বয়ংক্রিয় ডকুমেন্টেশন ইউটিলিটিগুলির মতো জিনিসগুলির জন্য এটি প্রয়োজনীয়)। যেহেতু এটি অবিশ্বাস্যরূপে দরকারী, আপনি সম্ভবত এটির থেকে যানটিকে মানীকৃত করার চেয়ে আরও ভাল হতে পারেন: http://docs.python.org/dev/library/pkgutil#pkgutil.iter_modules (আমরা সম্ভবত অবশেষে এটি একটি আনুষ্ঠানিকভাবে নির্দিষ্ট করে উন্নত করব পাইথন ৩.৪ এপিআই)
এবং আমার শেষ মন্তব্যটি হ'ল আপনার আমদানি সিস্টেম এবং লোডার অবজেক্টগুলির মধ্যে দায়বদ্ধতার বিভাজনকে ঘনিষ্ঠভাবে দেখে নেওয়া উচিত। বিশেষত, "লোড_মডিউল" এপিআইকে পৃথক "আরআইডি_মডিউল" এবং "এক্সিকিউটিউমডিউল" পদক্ষেপগুলিতে বিভক্ত করার বিষয়টি বিবেচনা করুন। এটি আপনাকে সেই ডিগ্রিটি হ্রাস করতে দেয় যেখানে লোডারদের আমদানির স্থিতির সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে।
পিইপি 302 এবং ইম্পোর্টলিব আরও নমনীয় আমদানি ব্যবস্থার জন্য একটি দুর্দান্ত সূচনা পয়েন্ট, তবে আমরা অবশ্যই ভুলত্রুটি করেছি যা এড়ানো উচিত।