প্যাকেজিং
পাইথনে প্যাকেজিং বলতে বুঝায়, আপন ার লেখা বিভিন্ন মডিউল গুলোকে একটা স্ট্যান্ডার্ড ফরম্যাটে একত্র করে বান্ডেল করা যাতে অন্য ইউজাররা খুব সহজেই আপনার বানানো প্রোগ্রামকে ব্যবহার করতে পারে। যেমন ধরুন, ওয়েব থেকে ডাটা স্ক্র্যাপ করার জন্য যাবতীয় সব রকম ফাংশনালিটি গুলো বানিয়ে কিছু ডেভেলপার একটি প্যাকেজ রিলিজ দিয়েছে যার নাম
BeautifulSoup
. আর আমরা খুব সহজেই সেই প্যাকজেটি আমাদের প্রজেক্টে ইন্সটল করে তার বিভিন্ন রেডিমেড ফাংশনকে ব্যবহার করতে পারি।.pypirc
কনফিগারেশন ফাইল তৈরি
এই ফাইলে PyPI এর সাথে আপনার অথেন্টিকেশনের কনফিগারেশন গুলো উল্লেখ থাকবে।[distutils]
index-servers =
pypi
pypitest
[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password
[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password
কাজের সুবিধার জন্য এই ফাইলটিকে আপনার হোম ফোল্ডারে রাখতে পারেন। অর্থাৎ যার লোকেশন হবে
~/.pypirc
যেহেতু এই ফাইলে আপনার কিছু সংবেদনশীল তথ্য যেমন পাসওয়ার্ড থাকবে তাই এই ফাইলের পারমিশন বদলে নিতে পারেন -chmod 600 ~/.pypirc
এই কমান্ড ইস্যু করে।
প্যাকেজ কন্টেন্ট তৈরি
ইউজারের জন্য এভাবে প্যাকেজ তৈরি করতে গিয়ে
setuptools
এবং distutils
মডিউলের দরকার পরে। প্রথমেই একটি ডিরেক্টরির মধ্যে সব গুলো প্রোগ্রাম ফাইলকে রাখতে হবে। ওই একই ডিরেক্টরির মধ্যে __init__.py
নামের একটি ফাইলও রাখতে হবে। এটা নিয়ম। এর উপস্থিতির মাধ্যমে পাইথন এটাকে একটা প্যাকেজ হিসেবে ধরে নেয়। এই ফাইলটি ফাকাও হতে পারে।এরপর, আপনার প্রোগ্রাম ফাইলগুলো এবং এই স্পেশাল ইনিসিয়ালাইজার ফাইল সহ ডিরেক্টরিটিকে আরও একটি রুট ডিরেক্টরির মধ্যে রাখতে হবে। এবং সেই রুট ডিরেক্টরির মধ্যে একটি readme ফাইল, একটি লাইসেন্স ফাইল এবং গুরুত্বপূর্ণ একটি ফাইল
setup.py
কে রাখতে হবে।ডিরেক্টরি লিস্টিং উদাহরণ,
MyPackage/ # Name of this dir can be anything
LICENSE.txt
README.md
setup.py
setup.cfg
mypackage/ # actual package name
__init__.py
myfile.py
anotherfile.py
ফাইলটি হতে পারে নিচের মত,
from distutils.core import setup
setup(
name = 'mypackage',
packages = ['mypackage'], # this must be the same as the name above
version = '0.1',
description = 'A random test lib',
author = 'Nuhil Mehdy',
author_email = '[email protected]',
url = 'https://github.com/nuhil/mypackage', # use the URL to the github repo
download_url = 'https://github.com/nuhil/mypackage/archive/0.1.tar.gz', # I'll explain this in a second
keywords = ['testing', 'logging', 'example'], # arbitrary keywords
classifiers = [],
)
download_url
লিঙ্কের মাধ্যমে আপনার প্যাকেজের টারবল ভার্সন পয়েন্ট করে দিতে হয়। যদি আপনার সোর্স কোড github -এ হোস্ট করা থাকে এবং মুল রিপোজিটরি থেকে একটি ট্যাগ তৈরি করা থাকে তাহলে সেখানে এরকম টারবল রেডি থাকে।ট্যাগ তৈরি করতেঃ প্রথমে লোকাল রিপোজিটরিতে ঢুকে কমান্ড দিতে হবেgit tag 0.1 -m "Adds a tag so that we can put this on PyPI."
এরপরgit tag
কমান্ড দিয়ে ট্যাগ গুলো দেখা যাবে। আগের কমান্ড দিয়ে ঠিক ঠাক ট্যাগ তৈরি হয়ে থাকলে লিস্ট আসবে এমন -0.1
. এরপরgit push --tags origin master
কমান্ড দিতে হবে যার মাধ্যমে github এ এই ট্যাগের তথ্য যুক্ত হয়ে যাবে। আর সেই নির্দিষ্ট ট্যাগ ওয়ালা টারবলটী ডাউনলোডের জন্য তৈরি থাকবে এই লিঙ্কে -https://github.com/{username}/{module_name}/archive/{tag}.tar.gz
setup.cfg ফাইল
যদি আপনার readme ফাইলটি মার্কডাউন ফরম্যাটে লেখা হয়ে থাকে তাহলে এই ফাইলটি দরকার পরে। এর কন্টেন্ট হবে নিচের মত।
[metadata]
description-file = README.md
.txt
ফরম্যাটে লেখা readme ফাইল হলে উপরোক্ত ফাইল যুক্ত করার দরকার পরে না।
PyPI Test এ প্যাকেজ আপলোড
প্রথমে নিচের কমান্ড ইস্যু করুন -
python setup.py register -r pypitest
এরপর,
python setup.py sdist upload -r pypitest
PyPI Live এ প্যাকেজ আপলোড
প্রথমে নিচের কমান্ড ইস্যু করুন -
python setup.py register -r pypi
এরপর,
python setup.py sdist upload -r pypi
Last modified 5yr ago