अजगर फाइल को कैसे संकलित करें?


57

मैंने अजगर सीखना शुरू कर दिया है और मैं उबंटू में एक नया उपयोगकर्ता भी हूं। मुझे .pyफाइलों को संकलित करने के तरीकों को जानना होगा । मैंने कमांड के साथ कोशिश की है

python "hello.py"

अजगर को संकलित करने के अन्य तरीके क्या हैं?

जवाबों:


58

ब्रायन के उत्तर में जोड़ते हुए, यदि आप किसी फ़ाइल या टर्मिनल से फ़ाइलों का एक गुच्छा संकलित करना चाहते हैं, तो py_compileमॉड्यूल को निम्न तरीके से स्क्रिप्ट के रूप में निष्पादित किया जा सकता है:

python -m py_compile fileA.py fileB.py fileC.py ...


9
यदि आप संकलित कर रहे हैं क्योंकि आप गति चाहते हैं, तो आप -Oध्वज को भी जोड़ सकते हैं , जैसे python -O -m py_compile …, "मूल अनुकूलन चालू करें"। यह मुख्य रूप से assertस्टेटमेंट्स और if __debug__कोड को स्ट्रिप्स करता है , इसलिए अधिकांश कोड के लिए इसका कोई प्रभाव नहीं होता है। देखें man pythonऔर "क्या अजगर अनुकूलन करता है ... है?" जानकारी के लिए।
रोरी ओ'केन

26

यह भी ध्यान रखें कि इसे चलाने के लिए आपको फ़ाइल संकलित करने की आवश्यकता नहीं .pyहै। पायथन एक व्याख्या की गई भाषा है, और आप सीधे स्क्रिप्ट का उपयोग कर सकते हैं:

python hello.py

या स्क्रिप्ट #!/usr/bin/env pythonके शीर्ष पर जोड़कर अपनी स्क्रिप्ट को निष्पादन योग्य बनाएं , फ़ाइल को निष्पादन योग्य बनाएं chmod +x hello.pyऔर फिर चलें:

./hello.py

यह तथ्य कि पायथन आंतरिक रूप से प्रदर्शन के कारणों के लिए आपकी .pyस्क्रिप्ट को बायटेकोड .pycफाइलों में संकलित करता है, एक कार्यान्वयन विवरण है, और जब तक आपके पास ऐसा करने का एक मजबूत कारण नहीं है, तब तक अजगर खुद तय करें कि कब और क्या संकलन करना है।


मैं उलझन में हूं कि यह क्यों काम करता है। क्या पायथन दुभाषिए को इसे चलाने के लिए स्क्रिप्ट पढ़ने में सक्षम होने की आवश्यकता नहीं है? यदि आप केवल निष्पादन की अनुमति देते हैं ( chmod +x), तो दुभाषिया स्क्रिप्ट को कैसे पढ़ रहा है?
पीला

@ येलो 01: जब आप एक ऐसी स्क्रिप्ट निष्पादित करते हैं जिसमें एक "शेबंग" होता है, यानी, पहली पंक्ति के साथ शुरू होता है #!/path/to/interpreter, तो कर्नेल वास्तव में जो कुछ भी घोषित किया जाता है, वह स्क्रिप्ट पथ को एक तर्क के रूप में पारित करता है। मेरे उदाहरण में, जब आप चलाते हैं ./hello.pyकि वास्तव में क्या निष्पादित होता है /usr/bin/env python ./hello.pyEn.wikipedia.org/wiki/Shebang_(Unix)
MestreLion

@ पीला 01 आप सही हैं कि एक बार MestreLion द्वारा वर्णित प्रक्रिया के माध्यम से शुरू होने पर दुभाषिया को पढ़ने की अनुमति की आवश्यकता होगी। हालाँकि, chmod +xअनुदान निष्पादित करता है, और मौजूदा अनुमतियों को नहीं छूता है, इसलिए संभवतः अब निष्पादन योग्य होने के अलावा यह पठनीय है।
स्पेक्टर्स

11

पायथन में इस लिंक का संकलन देखें

पृष्ठ के मध्य में, यह py_compile मॉड्यूल के बारे में बात करता है जिसे आयात किया जा सकता है। सिंटैक्स निम्नानुसार है:

import py_compile

py_compile.compile("file.py")

संकलन की यह विधि मॉड्यूल को निष्पादित नहीं करेगी, जैसे कि अजगर फ़ाइलहोम चलाना।

एक ऐसी विधि भी है जो संपूर्ण निर्देशिका ट्री को संकलित करती है लेकिन मैं आपको लिंक को देखने देता हूं कि यह कैसे निष्पादित होता है।

उम्मीद है की यह मदद करेगा।



4

आप विभिन्न तरीकों का उपयोग करके पायथन स्क्रिप्ट को एक बाइनरी कोड के लिए संकलित कर सकते हैं, लेकिन मुझे पता चला है कि नुत्का का उपयोग करना अधिक कुशल है।

नुत्का एक पायथन-टू-सी ++ कंपाइलर है जो अजगर के लगभग सभी संस्करणों का समर्थन करता है।

कमांड सिंटैक्स जितना आसान है

nuitka hello.py

अधिक जानकारी के लिए गोटो http://nuitka.net/doc/user-manual.html


6
अधिक कुशल कैसे? कोई इसका उपयोग क्यों करना चाहेगा?
मूरू

nuitka वास्तव में बहुत उपयोगी है - उदाहरण के लिए, यह आपको पायथन कार्यक्रमों को उन कंप्यूटरों पर शिप करने की अनुमति देता है जहां पायथन स्थापित नहीं है। लेकिन जैसा कि नुत्का ने पायथन कार्यक्रमों को C ++ मशीन कोड के लिए संकलित किया है, आप इसे दरकिनार कर सकते हैं।
user258532
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.