সমস্ত পাইথন প্রোগ্রাম স্বয়ংক্রিয়ভাবে আপনার সোর্স কোড কম্পাইল করে কোড কম্পাইল করে যাকে বাইট কোডও বলা হয়, এটি কার্যকর করার আগে।
যখনই আমরা প্রথমবার একটি মডিউল আমদানি করি বা যখন আপনার সোর্স ফাইলটি একটি নতুন ফাইল বা আমাদের কাছে একটি আপডেট করা ফাইল থাকে তখন সম্প্রতি কম্পাইল করা ফাইলটি, .py ফাইলের মতো একই ডিরেক্টরিতে ফাইলটি কম্পাইল করার সময় একটি .pyc ফাইল তৈরি করা হবে। (পাইথন 3- থেকে আপনি দেখতে পারেন .pyc ফাইলটি আপনার .py ফাইলের মতো একই ডিরেক্টরির পরিবর্তে __pycache__ নামক একটি সাবডিরেক্টরিতে রয়েছে)। এটি একটি টাইম-সেভার মেকানিজম কারণ এটি পাইথনকে কম্পাইলেশন স্টেপ এড়িয়ে যেতে বাধা দেয় যখন আপনি পরের বার আপনার প্রোগ্রাম চালাবেন।
আপনি যদি একটি আমদানি (অন্য ফাইল) সহ একটি স্ক্রিপ্ট চালান তবে কোনো .pyc ফাইল তৈরি হবে না। উদাহরণস্বরূপ, যদি আপনার কাছে একটি স্ক্রিপ্ট(file1.py) থাকে যা অন্য একটি ফাইল (file2.py) আমদানি করে।
একটি PYC ফাইল তৈরি করার সবচেয়ে সহজ উপায় হল এটি আমদানি করা। ধরুন আপনার একটি মডিউল নাম MainP.py আছে। শুধু কর -
>>> import MainP >>>
যাইহোক, আপনি যদি এমন একটি মডিউলের জন্য একটি .pyc ফাইল তৈরি করতে চান যা আমদানি করা হয়নি, তাহলে আমাদেরকে py_compile নামক মডিউল সেট করতে হবে এবং সেই কাজটি করার জন্য সমস্ত মডিউল কম্পাইল করতে হবে৷
py_compile মডিউল ম্যানুয়ালি যেকোনো মডিউল কম্পাইল করতে পারে। আমরা py_compile ব্যবহার করে ইন্টারেক্টিভভাবে py_compile মডিউল তৈরি করতে পারি। কম্পাইল ফাংশন।
>>> import py_compile >>> py_compile.compile('test.py') '__pycache__\\test.cpython-36.pyc' >>>
একবার আমরা পাইথন শেলে উপরের স্টেটমেন্টটি রান করলে, আমরা দেখতে পাব __pycache__ ফোল্ডারে (python 3) একটি .pyc ফাইল তৈরি হয়েছে অন্যথায় আপনার test.py ফাইলের মতো একই জায়গায় তৈরি হবে।
আপনি যদি একবারে একাধিক ফাইল কম্পাইল করতে চান, তাহলে আপনি py_compile.main() ফাংশনটি ব্যবহার করতে পারেন, যেমন −
>>> #Compiles several files at a time >>> py_compile.main(['test1.py', 'test2.py', 'test_sample1.py', 'test_sample2.py']) 0
আমরা দেখতে পাচ্ছি যে চারটি ভিন্ন কম্পাইল করা ফাইল −
তৈরি হয়েছে
যাইহোক, যদি আপনি একটি ফোল্ডারের ভিতরে সমস্ত ফাইল কম্পাইল করতে চান, আপনি compileall.compile_dir() ফাংশন ব্যবহার করতে পারেন।
>>> # Compile all the .py file from a particular folder. >>> 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\\logs\\refs\\remotes\\origin'... 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__' অবস্থানের ভিতরে তৈরি হয়েছে।
যদি আপনি একটি ডিরেক্টরি বা ডিরেক্টরির মধ্যে সমস্ত ফাইল কম্পাইল করতে চান তবে আপনি কম্পাইল ফাংশন দিয়ে এটি করতে পারেন৷
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'...
এবং আমরা দেখতে পাচ্ছি যে একটি __pycache__ ডিরেক্টরির মধ্যে থাকা সমস্ত ফাইলের জন্য .pyc ফাইল তৈরি করা হয়েছে।