Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
পাইথনে প্যাকেজ তৈরি
কেন আমরা এটা করছি ?
বিজ্ঞানের ক্ষেত্রে কোডিং করার ক্ষেত্রে সবচেয়ে গুরুত্ব পূর্ণ বিষয় হল আমরা আমাদের কোড পুনরায় ব্যবহার করতে পারি নতুন তৈরি ছাড়া , এটা আমাদের নতুন প্রজেক্টের ক্ষেত্রে পুরনো কাজের কোড ব্যবহারে সুযোগ দেয় । আমাদের কোডকে প্যাকেজে সমন্বিত করলে এটা কোডের পুনরায় ব্যবহার সহজ করে দেয় - যখন আমরা এটা করব , আমরা আমদের সকল কঠিন কাজের কোড শুধু একটি মাত্র কমান্ড দ্বারা অ্যাক্সেস করতে সফল হব ,অনেকটা বিখ্যাত নুম্পি বা ম্যাটপ্লোটলিব প্যাকেজের মত ।
সেটআপ পদ্ধতি
এই টিউটোরিয়াল তোমাকে নিয়ে যাবে demo Python package এর মধ্য দিয়ে , এবং তোমার নতুন প্যাকেজ তৈরিতে বিস্তারিত ব্যাখ্যা দিবে . এই ডেমো টা সম্পূর্ণ ফাংশনাল , তাই তুমি এটা তোমার প্যাকেজের জন্য টেমপ্লেট হিসেবে ব্যবহার করতে পার ।
আমরা এই লিসনে আমরা নিজেদের প্যাকেজ তৈরি করব , কিন্তু তুমি উপরের এই ডেমো তা উদাহরন হিসেবে দিতে পার ।
1. মূল বিষয়
একটি সাধারন পাইথন প্যাকেজের মুল গঠন এরকম হয় :
এগুলো ব্যবহার করে তৈরি শুরু কর ( লক্ষ্য রাখতে হবে যে
init
in__init__.py
এর পূর্বে ও পরে দুইটি underscores হবে ). এটা করে ফেললে , তুমি পাইথনের যে ক্লাস ও ফাংশন পুনঃ ব্যবহার করতে চাও সেগুলোsomePython.py
এখানে বসাও :তোমার পাইথন মডিউল ইম্পোরট কর (তুমি জত খুশি ততগুলি করতে পার ) in
__init__.py
:এবং সবসময় প্রত্যেক ফাংশনের জন্য সবসময়
test.py
তৈরি করবে :তোমার কাছে আগে থেকেই উদাহরন বা টেস্ট থাকতে পারে ; এগুলো ভিন্ন নয় , শুধু যথাযথ ভাবে সাজানো আছে . এখন আমরা পাইথনের পাকেজিং এ বিস্তারিত যা ঘটে তা দেখতে পারি ।
2. অনুমোদন
পাকেজিং কোড পুনরায় ব্যবহার করা যাবে এবং শেয়ার করা যাবে - এবং তোমার কঠিন কাজের সম্মান ও সবাইকে তোমার কাজ বুঝতে সাহায্য করার জন্য ও তোমার কাজ ব্যবহারের অনুমুতির জন্য , তোমার একটি লাইসেন্স প্রয়োজন । লক্ষ্য রাখ , যদি লাইসেন্স না থাকে তাহলে যে যা খুশি তাই করতে পারবে না ! অনুমোদিত কোড থাকে সন্দেহজনক ধূসর এলাকায় অনেকটা মহামারির মত ।
এখানে অসংখ্য ওপেনসোর্স লাইসেন্স আছে ; তোমার যেটা খুশি নিতে পার , কিন্তু ** তোমার নিজের নামে লিখনা **, যদিনা তুমি একজন উকিল হও ; উপরের লাইসেন্স গুলো উকিল দ্বারা পঠিত তোমার স্বার্থ সংরক্ষনের জন্য ।
যদি তুমি নিশ্চিত না হও কোন লাইসেন্স নিবে তাহলে , এটা নাও MIT । এই MIT লাইসেন্সের অধিনে কেউ তোমার কোড ব্যবহার করতে পারবে ,কিন্তু কোডে তোমার মালিকানা থাকবে ।
যে লাইসেন্স তা তুমি নিবে সেটা , সেটার সম্পূর্ণ টেক্সট কাট করে নতুন LICENSE.txt ফাইলে পেস্ট কর তোমার প্রোজেক্ট ফোল্ডোরে (
project
উপরে উদাহরন দেখ ), এবং কপিরাইট লাইনে তোমার নাম ও তারিখ দাও ।3. তোমার প্যাকেজ বর্ণনা কর
প্যাকেজ বর্ণনা করা থাকে ডিরেক্টরির
setup.py
ফাইলে । এই উদাহরন টি তোমার নিজেরsetup.py
তে কপি কর , এবং সকল ফিল্ড পরিবর্তন কর ; বাতিক্রম গুলো টেবিলে দেউয়া হল .This table contains descriptions of the parameters you may consider changing; others can be left as is.
numpy
বাmatplotlib
।এই
setup.py
ফাইলটি তোমার প্যাকেজের জন্ন মেশিন রিডেবল বর্ণনা ; মানুষের জন্য , একটি README.txt ফাইল আছে , প্রজেক্ট ডিরেক্টরিতে । , তোমার প্যাকেজ কিভাবে ব্যবহার করবে , কিভাবে অবদান রাখবে , এটার বর্ণনা সমস্ত লিখ এখানে ।4. অতিরিক্ত ডেটা
যদি তোমার প্যাকেজে কোন অতিরিক্ত ডেটা ফাইল রাখতে হয় তাহলে , তোমার প্রয়োজন হবে একটি MANIFEST.in ফাইল তোমার প্রজেক্ট ডিরেক্টরীতে। প্রথমে, তোমার ডেটা রাখ
packageData
এই ফোল্ডারের ভিতর যা আছেmyPackage
এর ভিতর ; তোমার প্রজেক্ট দেখতে এরকম হউয়া উচিত :যেখানে তোমার ডেটা থাকবে
myData.dat
তে ; পুনরায় , তোমার জত খুশি ততগুলি ফাইল থাকতে পারে । প্রত্যেক ডেটা ফাইলের জন্য , একটি লাইন যোগ করMANIFEST.in
এটা তোমার ডেটার জন্য একটি পাথ তৈরি করবে :সকল ফাইল
MANIFEST.in
এর , প্যাকেজ ইন্সটলের সময় যোগ হবে ।5. এটিকে বন্ধ কর ও পাঠাও
এত তুকুই , সব হয়ে গেছে , এখন তুমি ব্যবহার করতে পার
পাইথন তোমার প্যাকেজ গুলো কে একত্র করবে
dist
(ribution) ফোল্ডারে ।GitHub এ বণ্টন
git এর ক্ষেত্রে , উপরের চিত্রের মত সব যোগ কর নতুন এই
dist
ফোল্ডারে ,git repository থাকে প্রজেক্টের উপরে (project
), এতাকে চালু কর GitHub এ । এখন , পৃথিবীর যে কেউ তোমার প্যাকেজ ইন্সটল করতে পারবে ( মনে রেখ তোমার নাম দিতেyourName
GitHub এর user name এ এবংrepoName
হবে তোমার ইউজার নেম অনুযায়ী ):PyPI এ বণ্টন
PyPI এ বণ্টন Git এ বণ্টনের চেয়ে সহজ , কিন্তু তোমাকে দুই জাইগায় প্যাকেজ টা দেখতে হবে যদি তুমি GitHub এ ডেভোলপ করতে চাও এবং PyPI এ বণ্টন করতে চাও । প্রথমে PyPI এ প্যাকেজ চালু করার জন্য , PyPI এ নতুন একাউন্ট তৈরি কর , এবং ফিরে যাও তোমার প্যাকেজ এ
package
ফোল্ডারে ।তোমার প্যাকেজ নাম পেতে - সেগুলো অবশ্যই একক হতে হবে । তারপর , তোমার প্যাকেজ আপলোড কর ; যখন তুমি তোমার কোডের নতুন ভার্শন বের করবে তখন প্রতিবার তোমাকে এটা করতে হবে :
এখন , তুমি এবং পৃথিবীর যে কেউ তোমার প্যাকেজ ইন্সটল করতে পারবে এমনভাবে :
6. উদাহরণ চেষ্টা কর
উপরে বর্ণনা কৃত ডেমো প্যাকেজ তুমি ইন্সটল করতে পার , চালু করার মাধ্যমে :
PyPI থেকে :
এই ডেমো প্যাকেজ এর উপরের মত সমান কোড আছে । চালু করার পর নিচের স্ক্রিপ্ট দিয়ে চালু কর :
এই সাধারন
import
কমান্ডের দ্বারা , আমরা (এবং আমাদের সকল বন্ধুরা )fahrToKelv
ফাংশন ব্যবহার করতে পারব যা আমরা আগে টেস্ট করেছি । প্যাকেজের ভিতর তুমি যত খুশি ফাংসন আইডিয়া দিতে পার ; শুধু এইsomePython.py
ফাংশন টি যোগ করতে থাক ( এবং সেগুলো টেস্ট করtest.py
!), অথবা আরও পাইথন ফাইল অ্যাড করsomePython.py
(এটা যোগ করতে ভুলোনা in__init__.py
), অথবা অনেক ফোল্ডার যোগ কর এতেmyPackage
একপই নিয়মে , এবং তুমি নিজের পছন্দ ম টুলস তৈরি করতে পার ।