हां, आप पायथन मॉड्यूल को संकलित प्रारूप में रख सकते हैं। जब आप एक मॉड्यूल इम्पोर्ट करते हैं तो पायथन स्वचालित रूप से पायथन सोर्स कोड को संकलित करता है, इसलिए `.pyc` फ़ाइल बनाने का सबसे आसान तरीका इसे इम्पोर्ट करना है। यदि आपके पास `mymodule.py` मॉड्यूल है, तो बस करें:
>> import mymodule
यह उसी डायरेक्टरी में `mymodule.pyc` फ़ाइल बनाएगा। एक कमी यह है कि यह केवल मॉड्यूल को संकलित नहीं करता, यह इसे निष्पादित भी करता है, जो आप नहीं चाह सकते हैं। (हालांकि, यह स्क्रिप्ट निष्पादित करने में विफल होने पर भी पूरी स्क्रिप्ट को संकलित करता है)।
प्रोग्रामेटिक रूप से संकलित करें (बिना निष्पादन)
इसे प्रोग्रामेटिक रूप से और कोड निष्पादित किए बिना करने के लिए, आप `'py_compile'` मॉड्यूल का उपयोग कर सकते हैं:
>> import py_compile
>>> py_compile.compile("mymodule.py")
पूरे डायरेक्टरी ट्री को संकलित करें
एक `'compileall'` मॉड्यूल भी है जिसका उपयोग पूरे डायरेक्टरी ट्री में सभी मॉड्यूल संकलित करने के लिए किया जा सकता है।
>> import compileall
>>> compileall.compile_dir("mylib", force=1)
कमांड लाइन से
# सिंगल फ़ाइल
python -m py_compile mymodule.py
# पूरी डायरेक्टरी
python -m compileall mylib
python -m compileall -f mylib # बलपूर्वक पुनः संकलित
महत्वपूर्ण नोट्स
- पायथन का बाइटकोड प्लेटफॉर्म के बीच पोर्टेबल है, लेकिन पायथन रिलीज के बीच जरूरी नहीं
- `.pyc` फ़ाइलें `__pycache__` डायरेक्टरी में संग्रहीत होती हैं (पायथन 3.2+)
- फाइलनाम प्रारूप: `module.cpython-311.pyc` (इंटरप्रेटर संस्करण शामिल)
- संकलित फ़ाइलें सोर्स कोड छिपाती नहीं हैं - डिकंपाइल करना आसान है
- प्रदर्शन लाभ: केवल स्टार्टअप समय (पार्सिंग बचाता है), रनटाइम नहीं
बाइटकोड बनाम सोर्स
| पहलू | .py (सोर्स) | .pyc (बाइटकोड) |
|---|---|---|
| पठनीयता | मानव-पठनीय | बाइनरी |
| पोर्टेबिलिटी | सभी पायथन संस्करण | समान मेजर संस्करण |
| आकार | बड़ा | छोटा |
| लोड समय | धीमा (पार्स + संकलन) | तेज (केवल लोड) |