2009-12-24 13 views
28

मैं पाइथन प्रोग्रामिंग भाषा में नया हूं। मैं सोच रहा था कि पाइथन में लिखे गए प्रोग्राम को संकलित करना संभव है या नहीं।क्या पाइथन में लिखे गए एक प्रोग्राम को संकलित करना संभव है?

+3

आप वास्तव में एक पायथन लिपि "संकलित" नहीं करते हैं। आप इसे पायथन दुभाषिया के साथ चलाते हैं। – ghostdog74

+10

@ ghostdog74 - हाँ, लेकिन पायथन _can_ संकलित किया जाना चाहिए। –

+1

@andrew, हाँ मुझे पता है कि पाइथन संकलित किया जा सकता है। यह लड़का पाइथन के लिए नया है, इसलिए मैं इसे लेता हूं कि वह उदाहरण के लिए सी के साथ क्या करता है, उदाहरण के लिए, py2exe या pyc फ़ाइलों जैसे अधिक उन्नत सामान नहीं ... – ghostdog74

उत्तर

31

मुझे लगता है कि Compiling Python Code एक अच्छी जगह शुरू करने के लिए होगा:

अजगर स्रोत कोड स्वतः CPython दुभाषिया द्वारा अजगर बाइट कोड में संकलित किया है। संकलित कोड आमतौर पर पीवायसी (या पीवाईओ) फ़ाइलों, में संग्रहीत होता है और जब स्रोत अद्यतन होता है, या अन्यथा आवश्यक होने पर पुन: उत्पन्न होता है।

लोग हैं, जो पहले से ही अजगर स्थापित किया है, आप कर सकते हैं जहाज या तो PY फाइल या PYC फ़ाइलों के लिए एक कार्यक्रम वितरित करने के लिए। हाल के संस्करणों में, आप भी पीवाई या पीवाईसी फाइलों वाला एक ज़िप संग्रह बना सकते हैं, और उस ज़िप पथ में संग्रह जोड़ने के लिए एक छोटे "बूटस्ट्रैप स्क्रिप्ट" का उपयोग करें।

एक निष्पादन में "संकलन" करने के लिए एक अजगर प्रोग्राम का उपयोग एक बंडलिंग उपकरण, इस तरह के गॉर्डन मैकमिलन के संस्थापक (वैकल्पिक डाउनलोड) (पार मंच), थॉमस हेलर के py2exe (विंडोज़), एंथोनी Tuininga के के रूप में cx_Freeze (क्रॉस-प्लेटफ़ॉर्म), या बॉब Ippolito's py2app (मैक)। ये टूल्स आपके मॉड्यूल और डेटा फ़ाइलों को में किसी प्रकार की संग्रह फ़ाइल में रखता है, और बनाता है जो निष्पादन योग्य है जो चीजों को स्वचालित रूप से सेट करता है ताकि मॉड्यूल को उस संग्रह से आयात किया जा सके। कुछ टूल निष्पादन योग्य में संग्रह को एम्बेड कर सकते हैं।

1

फ्लाई पर पाइथन संकलन जब आप इसे चलाते हैं। abc.py

2

अजगर अजगर एक व्याख्या की भाषा है, तो आप उन्हें चलाने बनाने के लिए अपनी स्क्रिप्ट संकलन करने की जरूरत नहीं है:

द्वारा (लिनक्स) एक .py फ़ाइल चलाएँ। एक रनिंग करने का सबसे आसान तरीका टर्मिनल में इसके फ़ोल्डर में नेविगेट करना है और "python somefile.py" निष्पादित करना है। यह आपके लिए the python site.

से स्थापित पायथन स्थापित करता है आप पाइथन ऐप्स संकलित कर सकते हैं, लेकिन आम तौर पर यह नहीं है कि शुरुआत में ऐसा कोई नया डेवलपर करने की ज़रूरत नहीं है। यदि आप यही चाहते हैं, तो py2exe पर एक नज़र डालें। यह आपकी पायथन स्क्रिप्ट लेगा और इसे आपके विंडोज-आधारित कंप्यूटर पर किसी भी प्रोग्राम की तरह निष्पादन योग्य फ़ाइल के रूप में पैकेज करेगा। आप this site.

8

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

या 2 संकलन बस एक विशिष्ट * .py फ़ाइल exe करने के लिए संकलन करने के लिए, तुम सिर्फ उपयोग कर सकते हैं

import py_compile 
py_compile.compile("yourpythoncode.py") 
+1

py2exe इसके लिए विशेष रूप से अच्छा है। मैंने इसे बहुत उपयोग किया है और इसके साथ बहुत खुश हूं। यह आपके सभी आयात विवरण और एकाधिक मॉड्यूल/कोड फ़ाइलों को भी समायोजित करता है – inspectorG4dget

10

पाइथन, गतिशील भाषा के रूप में, सी या कोबोल कैन जैसे, कोड कोड में "संकलित" नहीं किया जा सकता है। कोड को निष्पादित करने के लिए आपको हमेशा एक दुभाषिया की आवश्यकता होगी, जो भाषा में परिभाषा के अनुसार एक गतिशील संचालन है।

आप बाइटकोड में स्रोत कोड "अनुवाद" कर सकते हैं, जो केवल एक मध्यवर्ती प्रक्रिया है जो दुभाषिया कोड के भार को तेज़ी से बढ़ाता है, यह पाठ फ़ाइलों को परिवर्तित करता है, टिप्पणियों, रिक्त स्थान, 'if' जैसे शब्दों, बाइनरी कोड में 'def', 'in', आदि, लेकिन पीछे के ऑपरेशन बिल्कुल समान हैं, पाइथन में, मशीन कोड या किसी अन्य भाषा में नहीं। यही वह है जो इसे .pyc फ़ाइलों में संग्रहीत किया जाता है और यह आर्किटेक्चर के बीच पोर्टेबल भी है।

संभवतः आपको कोड की संकलन (जो संभव नहीं है) को "संकलित" नहीं करना है, लेकिन दुभाषिया की बाहरी स्थापना के बिना कोड चलाने की अनुमति देने के लिए कोड के साथ एक दुभाषिया (सही आर्किटेक्चर में) "एम्बेड करना" है। ऐसा करने के लिए, आप उन सभी उपकरणों का उपयोग कर सकते हैं जैसे py2exe या cx_Freeze।

शायद मैं इस :-P

12

पर एक छोटे से पंडिताऊ जा रहा हूँ आप वास्तव में चाहते हैं, तो आप हमेशा Cython साथ संकलन सकता है। यह सी कोड उत्पन्न करेगा, जिसे आप किसी भी सी संकलक जैसे जीसीसी के साथ संकलित कर सकते हैं।

1

अनावश्यकता से बचें मैं यहां अपना जवाब दोहराता हूं।

कृपया मेरा उत्तर here देखें।

संबंधित मुद्दे

 संबंधित मुद्दे