কম্পিউটার টিউটোরিয়াল

পাইথনে বাইট কোড ফাইল (.pyc) জেনারেট করা


সকল পাইথন প্রোগ্রাম আপনার সোর্স কোডকে কম্পাইল্ড কোড বা বাইট কোড-এ স্বয়ংক্রিয়ভাবে কম্পাইল করে এক্সিকিউশনের আগে।

যখনই আমরা কোনো মডিউল প্রথমবার ইম্পোর্ট করি বা আপনার সোর্স ফাইল নতুন হয় বা আপডেটেড ফাইল থাকে তবে সম্প্রতি কম্পাইল করা ফাইল, একটি .pyc ফাইল একই ডিরেক্টরিতে তৈরি হবে .py ফাইলের সাথে (পাইথন ৩-এ আপনি দেখতে পারেন .pyc ফাইলটি __pycache__ নামে একটি সাবডিরেক্টরিতে তৈরি হয় একই ডিরেক্টরির বদলে)। এটি একটি টাইম-সেভিং মেকানিজম যাতে পাইথন আপনার প্রোগ্রাম এরপর চালালে কম্পাইলেশন ধাপ বাদ দিয়ে দেয়।

যদি আপনি একটি স্ক্রিপ্ট রান করেন যেটি একটি ইম্পোর্ট دارد (অন্য ফাইল), তবে .pyc ফাইল তৈরি হবে না। উদাহরণস্বরূপ, যদি আপনার একটি স্ক্রিপ্ট থাকে (file1.py) যা অন্য ফাইল (file2.py) ইম্পোর্ট করে।

PYC ফাইল তৈরি করার সবচেয়ে সহজ উপায় হলো ইম্পোর্ট করা। ধরুন আপনার একটি মডিউল আছে MainP.py। শুধু করুন:

>>> import MainP
>>>

তবে, যদি আপনি এমন একটি মডিউলের জন্য .pyc ফাইল তৈরি করতে চান যা ইম্পোর্ট করা নয়, তবে আমাদের py_compile এবং compileall মডিউল সেট ব্যবহার করতে হবে সেই কাজ করার জন্য।

py_compile মডিউল ম্যানুয়ালি যেকোনো মডিউল কম্পাইল করতে পারে। আমরা py_compile.compile ফাংশন ব্যবহার করে ইন্টারেক্টিভলিও py_compile মডিউল ব্যবহার করতে পারি।

>>> import py_compile
>>> py_compile.compile('test.py')
'__pycache__\\test.cpython-36.pyc'
>>>

উপরোক্ত স্টেটমেন্ট পাইথন শেলে রান করলে, আমরা দেখতে পাবো একটি .pyc ফাইল __pycache__ ফোল্ডারে তৈরি হয়েছে (পাইথন ৩) নাহলে আপনার test.py ফাইলের একই লোকেশনে তৈরি হবে।

পাইথনে বাইট কোড ফাইল (.pyc) জেনারেট করা

যদি আপনি একসাথে একাধিক ফাইল কম্পাইল করতে চান, তবে py_compile.main() ফাংশন ব্যবহার করতে পারেন, যেমন:

>>> # একসাথে কিছু ফাইল কম্পাইল করুন
>>> py_compile.main(['test1.py', 'test2.py', 'test_sample1.py', 'test_sample2.py'])
0

আমরা দেখতে পাচ্ছি চারটি আলাদা কম্পাইলড ফাইল জেনারেট হয়েছে:

পাইথনে বাইট কোড ফাইল (.pyc) জেনারেট করা

তবে, যদি আপনি একটি ফোল্ডারের ভেতরের সব ফাইল কম্পাইল করতে চান, তবে compileall.compile_dir() ফাংশন ব্যবহার করতে পারেন।

>>> # একটি নির্দিষ্ট ফোল্ডার থেকে সব .py ফাইল কম্পাইল করুন
>>> import compileall
>>> compileall.compile_dir('gmplot')
Listing 'gmplot'...
Listing 'gmplot\.git'...
Listing 'gmplot\.git\hooks'...
Listing 'gmplot\.git\info'...
Listing 'gmplot\.git\logs'...
Listing 'gmplot\.git\logs\refs'...
Listing 'gmplot\.git\logs\refs\heads'...
Listing 'gmplot\.git\logs\refs\remotes'...
Listing 'gmplot\.git\objects'...
Listing 'gmplot\.git\objects\info'...
Listing 'gmplot\.git\objects\pack'...
Listing 'gmplot\.git\refs'...
Listing 'gmplot\.git\refs\heads'...
Listing 'gmplot\.git\refs\remotes'...
Listing 'gmplot\.git\refs\remotes\origin'...
Listing 'gmplot\.git\refs\tags'...
Compiling 'gmplot\__init__.py'...
Compiling 'gmplot\color_dicts.py'...
Listing 'gmplot\gmplot'...
Listing 'gmplot\gmplot\markers'...
Compiling 'gmplot\gmplot.py'...
Compiling 'gmplot\google_maps_templates.py'...
Compiling 'gmplot\setup.py'...
Listing 'gmplot\tests'...
True

এখন আমরা দেখতে পাচ্ছি .pyc ফাইল 'folder_name\__pycache__' লোকেশনে তৈরি হয়েছে।

পাইথনে বাইট কোড ফাইল (.pyc) জেনারেট করা

যদি আপনি একটি ডিরেক্টরি বা ডিরেক্টরিগুলোর ভেতরের সব ফাইল কম্পাইল করতে চান, তবে কম্পাইল ফাংশন দিয়ে করতে পারেন।

C:\Users\rajesh>python -m compileall
Skipping current directory
Listing 'C:\\Python\\Python361\\python36.zip'...
Can't list 'C:\\Python\\Python361\\python36.zip'
Listing 'C:\\Python\\Python361\\DLLs'...
Listing 'C:\\Python\\Python361\\lib'...
Listing 'C:\\Python\\Python361'...
Compiling 'C:\\Python\\Python361\\BeautifulSoup_script1.py'...
Compiling 'C:\\Python\\Python361\\EDA_python1.py'...
Compiling 'C:\\Python\\Python361\\MainP.py'...
Compiling 'C:\\Python\\Python361\\NegativeAgeException.py'...
Compiling 'C:\\Python\\Python361\\NegativeNumberException.py'...
Compiling 'C:\\Python\\Python361\\OtherP.py'...
Compiling 'C:\\Python\\Python361\\__init__ Constructor.py'...
Compiling 'C:\\Python\\Python361\\attribute_access.py'...
...... 
Compiling 'C:\\Python\\Python361\\variable_arguments_list.py'...
Compiling 'C:\\Python\\Python361\\variable_arguments_list1.py'...
Compiling 'C:\\Python\\Python361\\winquality1.py'...

এবং আমরা দেখতে পাচ্ছি .pyc ফাইল সব ফাইলের জন্য __pycache__ ডিরেক্টরিতে তৈরি হয়েছে।

পাইথনে বাইট কোড ফাইল (.pyc) জেনারেট করা


  1. পাইথনে টেক্সট ফাইল পড়ার পদ্ধতি

  2. পাইথনে CSV ফাইল পড়ার পদ্ধতি

  3. পাইথনে pyqrcode মডিউল দিয়ে QR কোড জেনারেট করা

  4. গুগল কোলাবরেটরিতে পাইথন কোড রান করার পদ্ধতি