একক পাইথন ফাইল বিতরণ: মডিউল বা প্যাকেজ?


24

ধরুন আমার কাছে একটি অজগর ফাংশন বা শ্রেণি আছে (বা যাই হোক না কেন) useful_thingযা একটি একক ফাইলে বিদ্যমান। উত্স গাছকে সংগঠিত করার জন্য প্রয়োজনীয় দুটি উপায় রয়েছে। প্রথম উপায়ে একটি একক মডিউল ব্যবহার করা হয়েছে:

- setup.py
- README.rst
- ...etc...
- foo.py

যেখানে useful_thingসংজ্ঞায়িত করা হয় foo.py। দ্বিতীয় কৌশলটি একটি প্যাকেজ তৈরি করা হয়:

- setup.py
- README.rst
- ...etc...
- foo
|-module.py
|-__init__.py

যেখানে useful_thingসংজ্ঞায়িত করা হয় module.py। প্যাকেজ ক্ষেত্রে __init__.pyএই মত হবে

from foo.module import useful_thing

যাতে উভয় ক্ষেত্রেই আপনি করতে পারেন from foo import useful_thing

প্রশ্ন: কোন উপায়ে অগ্রাধিকার দেওয়া হয় এবং কেন?

সম্পাদনা: যেহেতু ব্যবহারকারী জিএনএটি বলেছেন যে এই প্রশ্নটি খারাপভাবে গঠিত হয়েছে, তাই আমি যুক্ত করব যে সরকারী পাইথন প্যাকেজিং টিউটোরিয়ালটি উপরে বর্ণিত পদ্ধতিগুলির মধ্যে কোনটি পছন্দনীয় তা সম্পর্কে মন্তব্য করে বলে মনে হচ্ছে না। আমি স্পষ্টভাবে করছি না আগপাছ আমার ব্যক্তিগত তালিকা দান কারণ আমি কিনা সেখানে একটি সম্প্রদায় পছন্দের পদ্ধতি, না অনুকূল / কনস আলোচনার উৎপাদিত হয় আগ্রহী :)


আপনার গবেষণা ভাগ করে নেওয়া প্রত্যেককে সহায়তা করে । আপনি কী চেষ্টা করেছেন এবং কেন এটি আপনার প্রয়োজনীয়তা মেটেনি তা আমাদের বলুন। এটি প্রমাণ করে যে আপনি নিজেকে সাহায্য করার চেষ্টা করার জন্য সময় নিয়েছেন, এটি আমাদের সুস্পষ্ট উত্তরের পুনরাবৃত্তি থেকে বাঁচায় এবং সর্বোপরি এটি আপনাকে আরও নির্দিষ্ট এবং প্রাসঙ্গিক উত্তর পেতে সহায়তা করে get এছাড়াও কীভাবে জিজ্ঞাসা করবেন দেখুন
gnat

1
@gnat: কীভাবে জিজ্ঞাসা করতে হবে তার লিঙ্কের জন্য ধন্যবাদ। আমি ভাল প্রশ্ন জিজ্ঞাসা অনুশীলন সম্পর্কে সচেতন, কিন্তু এই ক্ষেত্রে আমি আমার অভিজ্ঞতা দেওয়া ভাল বলে মনে করি না কারণ সম্ভবত আমি পরিষ্কার "এ বা বি" প্রশ্ন হিসাবে যা বলেছি তা মতামতের জন্য অনুরোধে পরিণত করবে turn আপনি এই প্রশ্নটিকে মতামত ভিত্তিক না করে কীভাবে উন্নতি করার পরামর্শ দিবেন ?
ড্যানিয়েলস্যাঙ্ক

@ গ্যানাট: অন্য কথায়, আমি যদি দুটি পদ্ধতির জন্য উপকার / বিবেকের তালিকায় আগ্রহী হতাম তবে আমি জিজ্ঞাসা করতাম "এই দুটি পদ্ধতির উপকারিতা কি হবে" এবং আমার নিজের আংশিক তালিকাটি অন্তর্ভুক্ত করতাম।
ড্যানিয়েলস্যাঙ্ক

উত্তর:


17

আপনার পক্ষে কার্যকর কাজটি আপনি করেন

একটি ফাংশন মডিউলের জন্য , প্যাকেজ তৈরির পক্ষে একেবারেই কোনও লাভ নেই। অতিরিক্ত নেমস্পেস তৈরি করতে এবং / অথবা একাধিক মডিউল জুড়ে আপনার কোডটি সংগঠিত করার জন্য প্যাকেজগুলি কার্যকর।

jsonএবং unittestপাইথন মান লাইব্রেরিতে মডিউল সত্যিই কোড সংগঠন উদ্দেশ্যে, উদাহরণস্বরূপ প্যাকেজ আছে। তবে বর্তমানে একটি মডিউল হিসাবে কেবল একটি অজগর ফাইলে কোড থাকা কোডটি পুরোপুরি ঠিক।

আপনি উদাহরণ চাইলে:

  • sixশুধুমাত্র একটি মডিউল বিতরণ
  • আমি বিভিন্ন প্যাকেজ যে সব একক মডিউল ডিস্ট্রিবিউশন হিসাবে ভাল হয় মুক্তি হয়েছে: setuptools_subversion, formatflowed,rtfunicode

প্রকল্পগুলি যা সত্যই প্যাকেজগুলির দুর্দান্ত ব্যবহার করে তাদের একটি ভাল উদাহরণের জন্য দেখুন:

কোনও 'অফিসিয়াল' সুপারিশ নেই; উভয় বিকল্প সম্পূর্ণ বৈধ।


তাহলে সরকারীভাবে পছন্দসই পদ্ধতি নেই?
ড্যানিয়েলস্যাঙ্ক

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