আমি পাইলনেস এবং পিক পৃষ্ঠায় ডিমের প্রবেশের পয়েন্টগুলিতে ডকুমেন্টেশন পড়েছি এবং আমি এখনও বুঝতে পারি না। কেউ আমাকে সেগুলি ব্যাখ্যা করতে পারে?
আমি পাইলনেস এবং পিক পৃষ্ঠায় ডিমের প্রবেশের পয়েন্টগুলিতে ডকুমেন্টেশন পড়েছি এবং আমি এখনও বুঝতে পারি না। কেউ আমাকে সেগুলি ব্যাখ্যা করতে পারে?
উত্তর:
একটি "এন্ট্রি পয়েন্ট" সাধারণত একটি ফাংশন (বা অন্য কলযোগ্য ফাংশন-জাতীয় বস্তু) যা আপনার পাইথন প্যাকেজটির বিকাশকারী বা ব্যবহারকারী হয়ত ব্যবহার করতে চান, যদিও একটি কল-নাযোগ্য বস্তুটি প্রবেশের পয়েন্ট হিসাবে সরবরাহ করা যেতে পারে (সঠিকভাবে) মন্তব্যগুলিতে নির্দেশিত!)।
সর্বাধিক জনপ্রিয় ধরণের এন্ট্রি পয়েন্ট হ'ল কনসোল_স্ক্রিপ্টস এন্ট্রি পয়েন্ট, যা এমন কোনও ফাংশনকে নির্দেশ করে যা আপনি আপনার প্যাকেজটি ইনস্টল করেন এমন কমান্ড-লাইন সরঞ্জাম হিসাবে উপলব্ধ করতে চান। এটি আপনার সেটআপের মধ্যে চলে py
entry_points={
'console_scripts': [
'cursive = cursive.tools.cmd:cursive_command',
],
},
আমার একটি প্যাকেজ রয়েছে যা আমি "ক্রেসিভ.টুলস" নামে সবেমাত্র নিযুক্ত করেছি এবং আমি চেয়েছিলাম যে এটি একটি "সাসিভ" কমান্ডটি সরবরাহ করবে যা কমান্ড লাইন থেকে কেউ চালাতে পারে, যেমন:
$ cursive --help
usage: cursive ...
এটি করার উপায়টি কোনও ক্রিয়াকলাপটিকে সংজ্ঞায়িত করা হয়, যেমনটি সম্ভবত "ক্রেসিভ_কম্যান্ড" ফাংশন যেমন ক্রাইভ / সরঞ্জাম / সেমিডি.পি.
def cursive_command():
args = sys.argv[1:]
if len(args) < 1:
print "usage: ..."
এবং তাই ঘোষণা; এটি ধরে নেওয়া উচিত যে এটি কমান্ড লাইন থেকে আহ্বান করা হয়েছে, ব্যবহারকারী প্রদত্ত যুক্তিগুলি পার্স করুন এবং ... ভাল, কমান্ডটি যেভাবে ডিজাইন করা হয়েছে তা করুন।
এন্ট্রি-পয়েন্ট ব্যবহারের দুর্দান্ত উদাহরণের জন্য ডকুমেন্টিলস প্যাকেজটি ইনস্টল করুন : এটি পাইথন ডকুমেন্টেশনটিকে অন্য ফর্ম্যাটে রূপান্তর করার জন্য অর্ধ-ডজন দরকারী কমান্ডের মতো কিছু ইনস্টল করবে।
এন্ট্রিপয়েন্টগুলি একটি অবিরাম, ফাইল সিস্টেম-ভিত্তিক অবজেক্টের নাম নিবন্ধকরণ এবং নাম-ভিত্তিক সরাসরি অবজেক্ট আমদানি প্রক্রিয়া সরবরাহ করে ( সেটআপলগুলি প্যাকেজ দ্বারা প্রয়োগ করা হয় )।
তারা পাইথন অবজেক্টের নাম ফ্রি-ফর্ম শনাক্তকারীদের সাথে যুক্ত করে। সুতরাং একই পাইথন ইনস্টলেশন ব্যবহার করে এবং শনাক্তকারীকে জানার সাথে অন্য কোনও কোড সম্পর্কিত নামের সাথে কোনও বস্তু অ্যাক্সেস করতে পারে, যেখানেই বিষয়টি নির্ধারিত নয়। যুক্ত নামের কোন একটি পাইথন মডিউল বিদ্যমান নাম হতে পারে ; উদাহরণস্বরূপ কোনও শ্রেণি, ফাংশন বা ভেরিয়েবলের নাম। এন্ট্রি পয়েন্ট প্রক্রিয়াটি যতক্ষণ তা আমদানিযোগ্য ততক্ষণ নামটি কী বোঝায় তা বিবেচনা করে না।
উদাহরণস্বরূপ, আসুন একটি ফাংশন (এর নাম), এবং একটি সম্পূর্ণ-যোগ্য নাম 'মায়েন্স.মিপকেজি.মোডিউল' সহ একটি কাল্পনিক পাইথন মডিউল ব্যবহার করুন:
def the_function():
"function whose name is 'the_function', in 'mymodule' module"
print "hello from the_function"
এন্ট্রি পয়েন্টগুলি সেটআপ.পিতে একটি এন্ট্রি পয়েন্ট ঘোষণার মাধ্যমে নিবন্ধিত হয়। 'My_ep_func' নামক এন্ট্রিপয়েন্টের অধীনে কাজটির নিবন্ধকরণ করতে:
entry_points = {
'my_ep_group_id': [
'my_ep_func = myns.mypkg.mymodule:the_function'
]
},
উদাহরণ হিসাবে দেখা যায়, প্রবেশের পয়েন্টগুলি গোষ্ঠীভুক্ত করা হয়; একটি গ্রুপের অন্তর্ভুক্ত সমস্ত এন্ট্রি পয়েন্টগুলি অনুসন্ধানের জন্য সংশ্লিষ্ট এপিআই রয়েছে (নীচে উদাহরণস্বরূপ)।
একটি প্যাকেজ ইনস্টলেশন (উদাহরণস্বরূপ 'পাইথন সেটআপ.পি ইনস্টল' চলছে) উপরোক্ত ঘোষণাটি সেটআপলগুলি দ্বারা বিশ্লেষণ করে। এরপরে এটি বিশেষ ফাইলটিতে বিশ্লেষণ করা তথ্য লিখেছে। তারপরে, pkg_resources API ( সেটআপলগুলির অংশ) প্রবেশ পয়েন্টটি সন্ধান করতে এবং সম্পর্কিত নাম (গুলি) সহ অবজেক্ট (গুলি) অ্যাক্সেস করতে ব্যবহার করা যেতে পারে:
import pkg_resources
named_objects = {}
for ep in pkg_resources.iter_entry_points(group='my_ep_group_id'):
named_objects.update({ep.name: ep.load()})
এখানে, সেটআপলগুলি বিশেষ ফাইলগুলিতে লেখা এন্ট্রি পয়েন্টের তথ্য পড়ে। এটি এন্ট্রি পয়েন্টটি খুঁজে পেয়েছিল, মডিউলটি (myns.mypkg.mymodule) আমদানি করে এবং pkg_resources.load () এ ফোন করে সেখানে সংজ্ঞায়িত the_function পুনরুদ্ধার করে।
ধরে নিই যে একই গ্রুপ আইডির জন্য অন্য কোনও প্রবেশ পয়েন্ট রেজিস্ট্রেশন নেই, তাহলে __ ফাংশনটি কল করা সহজ হবে:
>>> named_objects['my_ep_func']()
hello from the_function
সুতরাং, প্রথমে কিছুটা উপলব্ধি করা সম্ভবত কিছুটা কঠিন হলেও, এন্ট্রি পয়েন্ট প্রক্রিয়াটি ব্যবহার করা আসলে বেশ সহজ। এটি প্লাগেবল পাইথন সফ্টওয়্যার বিকাশের জন্য একটি দরকারী সরঞ্জাম সরবরাহ করে।
EntryPoints
যদিও ব্যাখ্যা খুব স্পষ্ট লিঙ্ক, সতেজ নয়।
অ্যাবস্ট্রাক্ট দৃষ্টিকোণ থেকে, প্রবেশপথগুলি পাইথন কলযোগ্যগুলির সিস্টেম-ব্যাপী রেজিস্ট্রি তৈরি করতে ব্যবহৃত হয় যা নির্দিষ্ট ইন্টারফেস প্রয়োগ করে। কোন প্যাকেজ নির্দিষ্ট প্রবেশ বিন্দুতে বিজ্ঞাপন দেয় তা নির্ধারণ করার জন্য প্রদত্ত প্যাকেজ দ্বারা কোন এন্ট্রি পয়েন্টগুলি বিজ্ঞাপন দেওয়া হয় তা দেখার জন্য পি কেজি_সোর্সগুলিতে এপিআই রয়েছে।
একটি প্যাকেজটিকে অন্য প্যাকেজে থাকা প্লাগইনগুলি ব্যবহার করার অনুমতি দেওয়ার জন্য এন্ট্রি পয়েন্টগুলি কার্যকর। উদাহরণস্বরূপ, আয়ান বাইকিংয়ের আটকানো প্রকল্পটি এন্ট্রি পয়েন্টগুলি ব্যাপকভাবে ব্যবহার করে। এই ক্ষেত্রে, আপনি এমন একটি প্যাকেজ লিখতে পারেন যা এন্ট্রি পয়েন্ট ব্যবহার করে এর ডাব্লুএসজিআই অ্যাপ্লিকেশন কারখানার বিজ্ঞাপন দেয় paste.app_factory
।
এন্ট্রি পয়েন্টগুলির জন্য আরেকটি ব্যবহার হ'ল সিস্টেমের সমস্ত প্যাকেজগুলি গণনা করা যা কিছু প্লাগইন কার্যকারিতা সরবরাহ করে। TurboGears ওয়েব ফ্রেমওয়ার্ক ব্যবহার python.templating.engines
ইনস্টল এবং উপলব্ধ করা হয় টেমপ্লেট লাইব্রেরি সন্ধান করার এন্ট্রি পয়েন্ট।
setup.py
নেইentry_points
।