পাইথনের ডিম কী?


530

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

উত্তর:


527

দ্রষ্টব্য: ডিমের প্যাকেজিং হুইল প্যাকেজিং দ্বারা ছাড়িয়ে গেছে।

.jarজাভাতে ফাইল হিসাবে একই ধারণা , এটি একটি .zipফাইল যা কিছু মেটাডেটা ফাইলের নাম বদলে দেওয়া হয়েছে .egg, কোডটিকে বান্ডিল হিসাবে বিতরণ করার জন্য।

বিশেষত: পাইথন ডিমের অভ্যন্তরীণ কাঠামো

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

.eggবিন্যাস বন্টন এবং সহজ আনইনস্টল বা কোডের আপগ্রেড উত্তমরুপে উপযুক্ত হয়, যেহেতু প্রকল্প মূলত স্বয়ংসম্পূর্ণ একটি একক ডিরেক্টরি বা ফাইল মধ্যে, অন্য কোন প্রকল্প 'কোড বা সম্পদ সঙ্গে unmingled হয়। এটি একই সাথে কোনও প্রকল্পের একাধিক সংস্করণ ইনস্টল করাও সম্ভব করে তোলে যেমন পৃথক প্রোগ্রামগুলি তারা ব্যবহার করতে চান এমন সংস্করণগুলি নির্বাচন করতে পারে।


82

.eggফাইল পাইথন প্যাকেজের জন্য একটি বিতরণ ফরম্যাট। এটি কেবল উত্স কোড বিতরণ বা উইন্ডোজ এর বিকল্প exe। কিন্তু লক্ষ করুন যে, বিশুদ্ধ জন্য Python, .eggফাইল সম্পূর্ণরূপে ক্রস প্ল্যাটফর্ম।

.eggফাইল নিজেই মূলত একটি হল .zipফাইল। আপনি যদি এক্সটেনশানটিকে " zip" এ পরিবর্তন করেন তবে আপনি দেখতে পাবেন এটিতে সংরক্ষণাগারের ভিতরে ফোল্ডার থাকবে ers

এছাড়াও, আপনার যদি কোনও .eggফাইল থাকে তবে আপনি এটি ব্যবহার করে প্যাকেজ হিসাবে ইনস্টল করতে পারেনeasy_install

উদাহরণ: .eggএকটি ডিরেক্টরি তৈরির জন্য একটি ফাইল তৈরি করতে বলুন mymathযার মধ্যে নিজেই বেশ কয়েকটি পাইথন স্ক্রিপ্ট থাকতে পারে, নিম্নলিখিত পদক্ষেপটি করুন:

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

তারপরে, টার্মিনাল থেকে করুন:

 $ python setup.py bdist_egg

এই আউটপুট অনেক উত্পন্ন করবে, কিন্তু আপনার এটি সম্পন্ন আপনি দেখতে পাবেন যে আপনি তিন নতুন ফোল্ডারসমূহ: বিল্ড , Dist এবং mymath.egg-তথ্য । আমাদের কেবলমাত্র ফোল্ডারটিই যত্নশীল সেই ডিস্ট ফোল্ডারটি যেখানে আপনি নিজের .eggফাইলটি খুঁজে পাবেন যেখানে mymath-0.1-py3.5.eggআপনার ডিফল্ট পাইথন (ইনস্টলেশন) সংস্করণ নম্বর রয়েছে (আমার এখানে: 3.5)

সূত্র: পাইথন লাইব্রেরি ব্লগ


3

পাইথন ডিমগুলি পাইথন প্রকল্পের সাহায্যে অতিরিক্ত তথ্য বান্ডিল করার একটি উপায় যা প্রকল্পের নির্ভরতাগুলি রানটাইমের সময় যাচাই করতে এবং সন্তুষ্ট করার পাশাপাশি প্রকল্পগুলিকে অন্যান্য প্রকল্পের জন্য প্লাগিন সরবরাহ করার অনুমতি দেয়। ডিমগুলি প্রতিবিম্বিত করে এমন বেশ কয়েকটি বাইনারি ফর্ম্যাট রয়েছে তবে সর্বাধিক সাধারণ '.egg' জিপফাইলে ফর্ম্যাট কারণ এটি প্রকল্পগুলি বিতরণের জন্য একটি সুবিধাজনক। প্যাকেজ-নির্দিষ্ট ডেটা, প্রকল্প-প্রশস্ত মেটাডেটা, সি এক্সটেনশান এবং পাইথন কোড সহ সমস্ত ফর্ম্যাট সমর্থন করে।

পাইথন ডিম ইনস্টল ও ব্যবহারের সবচেয়ে সহজ উপায় হল "ইজি ইনস্টল" পাইথন প্যাকেজ ম্যানেজার ব্যবহার করুন, যা আপনার জন্য ডিম খুঁজে পাবে, ডাউনলোড করবে, তৈরি করবে এবং ইনস্টল করবে; আপনি যা করতে চান তা হ'ল আপনি যে পাইথন প্রকল্পটি ব্যবহার করতে চান তার নাম (এবং optionচ্ছিকভাবে সংস্করণ) tell

পাইথন ডিমগুলি পাইথন ২.৩ এবং তার সাথে বেশি ব্যবহার করা যেতে পারে এবং সেটআপটুলস প্যাকেজ ব্যবহার করে তৈরি করা যেতে পারে (উত্স কোডের জন্য পাইথন সাবভার্সন স্যান্ডবক্স, বা বর্তমান ইনস্টলেশন সংক্রান্ত নির্দেশাবলীর জন্য ইজিইনস্টল পৃষ্ঠা দেখুন)।

পাইথন ডিমের প্রাথমিক উপকারিতা হ'ল:

  • তারা পাইথন প্যাকেজ পরিচালকের "ইজি ইনস্টল" এর মতো সরঞ্জামগুলিকে সক্ষম করে

  • .egg ফাইলগুলি পাইথন প্যাকেজের জন্য একটি "শূন্য ইনস্টলেশন" ফর্ম্যাট; কোনও বিল্ড বা ইনস্টল পদক্ষেপের প্রয়োজন নেই, কেবল তাদের পাইথনপথ বা সিএস.পথে রাখুন এবং সেগুলি ব্যবহার করুন (সি এক্সটেনশানস বা ডেটা ফাইল ব্যবহার করা হলে রানটাইম ইনস্টল হওয়া প্রয়োজন হতে পারে)

  • তারা অন্যান্য ডিমের মতো প্যাকেজ মেটাডেটা অন্তর্ভুক্ত করতে পারে

  • তারা "নামস্থান প্যাকেজ" (প্যাকেজ যে শুধু অন্যান্য প্যাকেজ ধারণ) পৃথক ডিস্ট্রিবিউশন বিভক্ত করা করার জন্য (অনুমতি উদাঃ zope। , পাকান। , শিখর। * প্যাকেজ আলাদা ডিম হিসাবে বিতরণ করা যেতে পারে স্বাভাবিক প্যাকেজ যা সবসময় একই অধীনে স্থাপন করা আবশ্যক অসদৃশ অভিভাবক ডিরেক্টরি This এটি এখন বিশাল মোনালিথিক প্যাকেজগুলি পৃথক উপাদান হিসাবে বিতরণ করার অনুমতি দেয়)

  • তারা অ্যাপ্লিকেশন বা গ্রন্থাগারগুলিকে একটি লাইব্রেরির প্রয়োজনীয় সংস্করণ নির্দিষ্ট করার মঞ্জুরি দেয়, যাতে আপনি উদাহরণস্বরূপ ("ট্যুইস্টেড-ইন্টারনেট> = ২.০") প্রয়োজন হতে পারে একটি আমদানি মোচড়ানো ইন্টারনেটের কাজ করার আগে।

  • এক্সটেনসিবল অ্যাপ্লিকেশন এবং ফ্রেমওয়ার্কগুলিতে এক্সটেনশন বা প্লাগইন বিতরণের জন্য এগুলি দুর্দান্ত ফর্ম্যাট (যেমন ট্র্যাক, যেটি 0.9b1 হিসাবে প্লাগইনগুলির জন্য ডিম ব্যবহার করে), কারণ ডিম রানটাইম ডিমগুলি সনাক্ত করতে এবং তাদের বিজ্ঞাপনযুক্ত এন্ট্রি পয়েন্টগুলি সন্ধানের জন্য সহজ API সরবরাহ করে (অনুরূপ Eclipse এর "এক্সটেনশন পয়েন্ট" ধারণাটিতে)।

জাভা "জার" ফর্ম্যাটের সুবিধার অনুরূপ মানকযুক্ত ফর্ম্যাট থাকা থেকে অন্যান্য সুবিধাও আসতে পারে।


অজগর ডিম একটি সংস্করণ নির্দিষ্ট? অর্থাৎ ডিম 2 বনাম 3 এর জন্য নির্মিত? এমনকি ছোটখাটো সংস্করণও? প্রাক্তন 2.x
ইলেওন

1

"ডিম" পাইথন-সম্পর্কিত প্রকল্পগুলির জন্য একটি একক-ফাইল আমদানিযোগ্য বিতরণ বিন্যাস।

"পাইথন ডিমগুলিতে দ্রুত গাইড" নোট করে যে "ডিম পাইথনগুলিতে যেমন জার জাভাতে হয় ..."

ডিম আসলে জারের চেয়ে সমৃদ্ধ; তারা আকর্ষণীয় মেটাডেটা যেমন লাইসেন্সের বিবরণ, রিলিজ নির্ভরতা ইত্যাদির মতো ধারণ করে hold


লিঙ্কটি আজ অবধি মারা গেছে।
পেরফি

@ পারফি লিঙ্কটি আমার পক্ষে কাজ করে।
ক্লিক

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