Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन लाइब्रेरीज़ को बाइट-कंपाइल करना

पायथन एक इंटरप्रेटर-आधारित भाषा है। हालाँकि, जब कोई स्क्रिप्ट (.py एक्सटेंशन वाली) चलाई जाती है, तो यह आंतरिक रूप से सोर्स कोड को बाइटकोड में कंपाइल करती है और बाद में बाइटकोड संस्करण को स्वचालित रूप से हटा दिया जाता है। जब किसी मॉड्यूल (प्रीकंपाइल्ड बिल्ट-इन मॉड्यूल के अलावा) को पहली बार इम्पोर्ट किया जाता है, तो उसका कंपाइल्ड संस्करण भी स्वचालित रूप से बनाया जाता है लेकिन __pycache__ फ़ोल्डर में .pyc एक्सटेंशन के साथ सेव किया जाता है। उसी मॉड्यूल को फिर से इम्पोर्ट करने पर यह दोबारा कंपाइल नहीं होता बल्कि पहले से बने बाइटकोड का उपयोग करता है।

पायथन स्क्रिप्ट को स्पष्ट रूप से कंपाइल करना

हालाँकि, .py एक्सटेंशन वाली पायथन स्क्रिप्ट फ़ाइल को चलाए बिना स्पष्ट रूप से कंपाइल किया जा सकता है। 'py_compile' मॉड्यूल में इस उद्देश्य के लिए 'compile()' फ़ंक्शन होता है। परिणामी .pyc फ़ाइल के नाम में पायथन का संस्करण संख्या जुड़ा होता है। पायथन 3.7 के मामले में, नाम में 'cpython-37' सफ़िक्स होता है।

आम तौर पर आपको इस मॉड्यूल की आवश्यकता नहीं होगी। हालाँकि, यह शेयर्ड उपयोग के लिए मॉड्यूल इंस्टॉल करते समय उपयोगी हो सकता है, खासकर यदि कुछ उपयोगकर्ताओं के पास सोर्स कोड वाली डायरेक्टरी में बाइटकोड कैश फ़ाइलें लिखने की अनुमति नहीं है।

कमांड लाइन इंटरफ़ेस

इस मॉड्यूल का एक कमांड लाइन इंटरफ़ेस है। इसे -m स्विच का उपयोग करके इम्पोर्ट किया जा सकता है:

E:\python37>python -m py_compile hello.py

यह __pycache__ सबफ़ोल्डर में 'hello.cpython-37.pyc' फ़ाइल बनाएगा और स्टोर करेगा।

प्रोग्रामेटिक बाइट-कंपाइलेशन

बाइट-कंपाइलेशन को py_compile मॉड्यूल में compile() फ़ंक्शन का उपयोग करके प्रोग्रामेटिक रूप से भी किया जा सकता है:

import py_compile
py_compile.compile("hello.py")

.pyc फ़ाइल को सीधे 실행 करना

.pyc एक्सटेंशन वाली बाइटकोड फ़ाइल को कमांड लाइन से सामान्य .py एक्सटेंशन वाली स्क्रिप्ट की तरह सीधे चलाया जा सकता है:

E:\python37>python __pycache__/hello.cpython-37.pyc

हालाँकि, इसे उसी संस्करण के इंटरप्रेटर द्वारा चलाया जा सकता है जिससे बाइटकोड फ़ाइल कंपाइल की गई थी। यदि हम इसे पायथन के किसी अन्य संस्करण के साथ चलाने का प्रयास करते हैं तो निम्न त्रुटि प्रदर्शित होगी:

C:\python36>python e:hello.cpython-37.pyc
RuntimeError: Bad magic number in .pyc file

एकाधिक फ़ाइलों को कंपाइल करना

py_compile मॉड्यूल में एक और फ़ंक्शन main() होता है जो कई सोर्स फ़ाइलों को कंपाइल करता है। तर्क के रूप में नामित फ़ाइलों को कंपाइल किया जाता है और परिणामी बाइटकोड को सामान्य तरीके से कैश किया जाता है। यह फ़ंक्शन सोर्स फ़ाइलों का पता लगाने के लिए डायरेक्ट्री संरचना को खोजता नहीं है; यह केवल स्पष्ट रूप से नामित फ़ाइलों को कंपाइल करता है।

अपवाद और अनुकूलन

यह मॉड्यूल PyCompileError अपवाद भी परिभाषित करता है जो फ़ाइल को कंपाइल करने का प्रयास करते समय त्रुटि होने पर उठाया जाता है (यह केवल तभी उठाया जाएगा जब compile() फ़ंक्शन के लिए doraise विकल्प True पर सेट हो)।

compile() फ़ंक्शन का optimize विकल्प अनुकूलन स्तर को नियंत्रित करता है और इसे बिल्ट-इन compile() फ़ंक्शन को पास किया जाता है। -1 का डिफ़ॉल्ट वर्तमान इंटरप्रेटर का अनुकूलन स्तर चुनता है।

  1. पायथन में pyqrcode मॉड्यूल का उपयोग करके QR कोड जनरेट करें पायथन में pyqrcode मॉड्यूल का उपयोग करके QR कोड जनरेट करें

    QR कोड में एक सफेद पृष्ठभूमि पर वर्ग ग्रिड में व्यवस्थित काले वर्ग होते हैं, जिसे कैमरा जैसे इमेजिंग डिवाइस द्वारा पढ़ा जा सकता है। इसका व्यापक रूप से व्यावसायिक ट्रैकिंग अनुप्रयोगों, भुगतान और वेबसाइट लॉगिन आदि में उपयोग किया जाता है। पायथन में pyqrcode मॉड्यूल का उपयोग QR कोड जनरेट करने के लिए कि

  1. पायथन getpass मॉड्यूल पायथन getpass मॉड्यूल

    पायथन की स्टैंडर्ड लाइब्रेरी के getpass मॉड्यूल में दो फ़ंक्शन्स परिभाषित हैं। वे तब उपयोगी होते हैं जब भी टर्मिनल-आधारित एप्लिकेशन को यूजर क्रेडेंशियल्स मान्य करने के बाद ही एक्ज़ीक्यूट करने की आवश्यकता होती है। getpass() यह फ़ंक्शन यूजर को पासवर्ड दर्ज करने के लिए प्रेरित करता है। डिफ़ॉल्ट रूप से

  1. - पायथन मॉड्यूल को अनलोड (रिलोड) कैसे करें?

    `reload(moduleName)` फ़ंक्शन पहले से लोड किए गए मॉड्यूल को रीलोड करता है (यह मानते हुए कि आपने इसे `import moduleName` सिंटैक्स के साथ लोड किया है) बिना स्क्रिप्ट से बाहर निकले। यह बातचीत के लिए अभिप्रेत है, जहां आपने एक मॉड्यूल के लिए सोर्स फ़ाइल संपादित की है और पायथन छोड़े बिना और इसे फिर से शुरू