পাইথনের "পিইপি -302 নতুন আমদানি হুকস" [বন্ধ] এর অভিজ্ঞতা


40

আমি রুবি (ক্রুবি) এর অন্যতম বিকাশকারী। আমরা রুবি ২.০ রিলিজ (2012 / ফেব্রুয়ারিতে প্রকাশের পরিকল্পনা নিয়ে) কাজ করছি।

পাইথনের "PEP302: নতুন আমদানি হুকস" (2003) রয়েছে:

এই পিইপি আমদানি হুকগুলির একটি নতুন সেট যুক্ত করার প্রস্তাব দেয় যা পাইথন আমদানি প্রক্রিয়াটির আরও ভাল কাস্টমাইজেশন দেয়। বর্তমান আমদানি হুকের বিপরীতে , একটি নতুন ধরণের হুক বিদ্যমান স্কিমের মধ্যে ইনজেকশনের মাধ্যমে মডিউলগুলি কীভাবে পাওয়া যায় এবং কীভাবে সেগুলি বোঝা যায় তার একটি সূক্ষ্ম দানাদার নিয়ন্ত্রণের অনুমতি দেয়।

আমরা রুপি ২.০ (ক্রুবি ২.০) এর মধ্যে পিইপি 302 এর অনুরূপ একটি বৈশিষ্ট্য প্রবর্তনের বিষয়ে বিবেচনা করছি। আমি এমন একটি প্রস্তাব দিতে চাই যা মাতজকে রাজি করতে পারে। বর্তমানে, ক্রুবি একটি স্ট্যান্ডার্ড উপায়ে কেবল ফাইল সিস্টেম থেকে স্ক্রিপ্টগুলি লোড করতে পারে।

পিইপি 302 সম্পর্কে আপনার যদি কোনও অভিজ্ঞতা বা বিবেচনা থাকে তবে দয়া করে ভাগ করুন।

উদাহরণ:

  1. এটি একটি দুর্দান্ত ধারণা। এটি পরিবর্তন করার দরকার নেই।
  2. এটি প্রায় ভাল, কিন্তু এটিতে এই সমস্যাটি রয়েছে ...
  3. যদি আমি ২০০৩ এ ফিরে যেতে পারতাম তবে আমি সেই অনুমানটি পরিবর্তন করে ...

6
বাহ, YARV লোক নিজে, হ্যালো এবং প্রোগ্রামারগুলিতে স্বাগতম! ;) স্ট্যাক এক্সচেঞ্জে আমরা সত্যই খোলা সমাপ্ত আলোচনা পছন্দ করি না, আমরা এর পরিবর্তে নির্দিষ্ট সমস্যাগুলি সমাধান করতে পছন্দ করি (আমাদের প্রায়শই জিজ্ঞাসিত প্রশ্নগুলিকে দ্রুত পড়ুন ) - যা আমি অনুমান করছি যে আপনার প্রশ্নটি স্ট্যাক ওভারফ্লোতে বন্ধ ছিল এবং এটি ইতিমধ্যে একটি এখানে কাছাকাছি ভোট এটিকে কিছুটা আরও সুনির্দিষ্ট করে তোলার জন্য আপনার উচিত - এই প্রশ্নটি অনুপ্রাণিত করে পিইপি 302 সম্পর্কে আপনার কি কোনও নির্দিষ্ট উদ্বেগ আছে?
ইয়ানিস

4
আপনার মন্তব্যের জন্য ধন্যবাদ, ইয়ানিস। আমি মনে করি আমি "সফ্টওয়্যার আর্কিটেকচার" সম্পর্কে আলোচনা করতে চাই। পাইপ 302 পাইথন ইন্টারপ্রেটারে তাদের নিজস্ব লোডারগুলি প্রসারিত করার জন্য শক্তিশালী এবং সাধারণ কাঠামো বলে মনে হয়। তবে শক্তিশালী বৈশিষ্ট্যটির অতিরিক্ত ব্যবহার (জাদুকরী কোড উত্পন্ন), দোভাষীর অপ্টিমাইজেশন প্রতিরোধের মতো ঝুঁকি রয়েছে। সুতরাং আমি জানতে চাই যে এই এক্সটেনশন কাঠামোটি অজগর ব্যবহারকারী এবং দোভাষী বিকাশকারীদের পক্ষে মিষ্টি বা না । আমি বিশ্বাস করি ইতিহাস অধ্যয়ন আমাকে রুবি ২.০-তে ভাল ধারণা তৈরি করতে সহায়তা করবে।
কোনচি সাসাদ

ধন্যবাদ আপনাকে আমার প্রশ্নটি বেশ সুন্দর করে সংশোধন করেছেন। এবং আমি দুঃখিত যদি এই প্রশ্নটি পছন্দনীয় না হয়।
কোনচি সাসাদ

আমাদের "মতামত জরিপ" পরীক্ষায় ব্যর্থ হওয়ার জন্য কীভাবে কোনও প্রশ্ন পৃষ্ঠতলে উপস্থিত হয় তার চমত্কার উদাহরণ এটি তারপরেও আশ্চর্যজনক মূল্য প্রমাণ করতে পারে।
রস প্যাটারসন

উত্তর:


47

আমি পাইথনের রানপি মডিউলটির রক্ষণাবেক্ষণকারী এবং বর্তমান আমদানি সিস্টেমের অন্যতম রক্ষণাবেক্ষণকারী। যদিও আমাদের আমদানি ব্যবস্থাটি চিত্তাকর্ষকভাবে নমনীয়, আমি কয়েকটা টুইট না করেই এটিকে পাইকারি গ্রহণের বিরুদ্ধে পরামর্শ দেব - পিছনের সামঞ্জস্যতার উদ্বেগের কারণে এমন কিছু গুচ্ছ রয়েছে যা অন্যথায় হওয়া দরকারের চেয়ে আরও বিশ্রী 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 এবং ইম্পোর্টলিব আরও নমনীয় আমদানি ব্যবস্থার জন্য একটি দুর্দান্ত সূচনা পয়েন্ট, তবে আমরা অবশ্যই ভুলত্রুটি করেছি যা এড়ানো উচিত।


1
সেগুলি এখনও পুরোপুরি সমাপ্ত হয়নি, তবে সম্পূর্ণ আমদানি সিস্টেম ডক্সের একটি প্রাথমিক খসড়া ডকস.পাইথন.আর.দেব
রেফারেন্স /

1
পাইথন.আর। / দেবদেব / পেপস / পেপ ০৪৫১১ পাইথনের ৩.৪ এর জন্য পাইথনের আমদানি সিস্টেমের একটি আপডেট যা এখানে ব্রেট এবং আমি-র অনেক মন্তব্যকে সম্বোধন করে।
এনকোঘ্লান

28

এনকোঘ্লানের পাশে আমি পাইথনের আমদানি সিস্টেমের অন্য রক্ষণাবেক্ষণকারী এবং এর বর্তমান প্রয়োগের লেখক, আমদানিব (http://docs.python.org/dev/py3k/library/importlib.html)। নিক যা বলেছিল তার সবকিছুই আমি একমত, তাই আমি কেবল কিছু অতিরিক্ত তথ্য যুক্ত করতে চাই।

প্রথমত, পিইপি 302 এ সরাসরি খুব বেশি নির্ভর করবেন না বরং এর পরিবর্তে বিমূর্ত বেস ক্লাস ইত্যাদির ক্ষেত্রে আমদানি কী সরবরাহ করে তা দেখুন back পিছনের দিকে সামঞ্জস্যের জিনিসগুলি পিইপি 302 এর সাথে সামঞ্জস্যপূর্ণ হতে হয়েছিল, তবে আমার কিছু যুক্ত করতে হয়েছিল প্রকৃত নমনীয়তার জন্য সমর্থনটি ছাপিয়ে শেষ করতে নিজস্ব API গুলি।

আর একটি গুরুত্বপূর্ণ বিষয় হ'ল আপনি বিকাশকারীদের দুটি টুকরো নমনীয়তা দিচ্ছেন। একটি হ'ল সরাসরি পৃথক ফাইল হিসাবে ফাইল সিস্টেমে ( অন্যথায় আমি এই স্টোরেজটিকে আমদানির জন্য ব্যাক-এন্ড বলি ) ব্যতীত অন্য কোনও উপায়ে কোড সংরক্ষণের ক্ষমতা , উদাহরণস্বরূপ এটি কোডটি একটি জিপ ফাইল, স্ক্লাইট ডাটাবেস ইত্যাদিতে বাস করার অনুমতি দেয় etc অন্য সমর্থনটি কোনও উপায়ে প্রাক-বা পোস্ট-প্রসেস কোডের নিয়ন্ত্রণের অনুমতি দেয় যেমন, কুইক্সোট (https://www.mems-exchange.org/software/quixote/) এবং এর জন্য স্ট্রিং লিটারেলগুলির বিকল্প ব্যবহার নিযুক্ত করা হয়নি not একটি পরিবর্তনশীল সমর্থন করা অনেক সহজ হবে be

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

তবে তারপরে আপনার এপিআইও দরকার যা কোড-নির্দিষ্ট। নিক যেমন উল্লেখ করেছেন, আপনাকে কোনও প্যাকেজ কী কী মডিউল ইত্যাদি রয়েছে সেগুলি অনুসন্ধানের জন্য API গুলি থাকা দরকার যা ফাইল-নির্দিষ্ট নয়। মডিউলগুলি যেখানে আপনি ফাইলের ধারণাটি সরিয়ে নিয়েছেন, সেখানে ডিল করার জন্য এপিআই থাকার এই অদ্ভুত দ্বৈততা রয়েছে তবে তারপরে আপনাকে ফাইল-জাতীয় সম্পদ ডেটা অ্যাক্সেস করার জন্য এপিআই সরবরাহ করা প্রয়োজন। এবং অনুলিপি এড়ানোর জন্য আপনি যখন অন্যটির বিষয়ে একটি প্রয়োগের চেষ্টা করার সাথে সাথে জলগুলি সত্যই নষ্ট হয়ে যায় (অর্থাত্ মানুষ প্রত্যাশিত ফাইল পাথ স্ট্রাকচারিং ইত্যাদির উপর নির্ভর করে etc. কারণ এটি কেবল একটি ফাইল নয়, কোডযুক্ত জিপফাইলের জন্য। আইডাব্লু আপনি দুটি অনুরূপ এপিআই প্রয়োগ করতে হবে, কিন্তু আপনি দীর্ঘ সময়ের জন্য এটির জন্য আরও ভাল হতে পারবেন।

নিক যেমন বলেছিল, আমাদের সমাধানটি একটি ভাল সূচনা পয়েন্ট, তবে আমি যদি স্ক্র্যাচ থেকে এপিআই ডিজাইন করতাম তবে আজকে এটি কীভাবে করব তা নয়।


-1

পিইপি 302 আপনাকে পাইথন আমদানি ব্যবস্থায় ডেকে আনে, যার অর্থ আপনি অন্যান্য উত্স থেকে ডেটাবেস, জিপ ফাইল ইত্যাদির থেকে কোড আমদানি করতে পারবেন।

আমদানির পাইথন বাস্তবায়নে জটিলতার দীর্ঘ ইতিহাস রয়েছে যা শীঘ্রই আমদানির একটি পাইথন বাস্তবায়ন প্রবর্তন করে সহজ করা হবে।

আমার কোণার কেসগুলি সম্পর্কে দীর্ঘ এবং কঠোর চিন্তা করার পরামর্শ দেওয়া উচিত। তারপরে আপনি একটি কার্যকর বাস্তবায়ন পেতে পারেন।

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