.Pyc (संकलित अजगर) फ़ाइल कैसे चलाएं?


18

जब मैं एक अजगर फ़ाइल संकलित करता हूं, तो मुझे * .pyc फ़ाइल मिलती है। जब मैं उसे चलाने की कोशिश करता हूं, तो मुझे एक संदेश मिलता है जिसमें कहा गया है कि उन्हें चलाने का कोई कार्यक्रम नहीं है। जब मैं उस विकल्प के माध्यम से ऑनलाइन एक कार्यक्रम की खोज करता हूं, तो यह कहता है कि कोई भी नहीं है। किसी ने मुझे वहाँ फ़ाइलों को चलाने में मदद कर सकते हैं?

जवाबों:


24

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

python yourfile.pyc

कारण आप अपनी .py फाइलें सीधे चला सकते हैं क्योंकि आपके पास लाइन है

#!/usr/bin/python

या

#!/usr/bin/env python

या .py फ़ाइलों में पहली पंक्ति पर समान कुछ। यह आपके शेल को अजगर इंटरप्रेटर के साथ बाकी फ़ाइल को निष्पादित करने के लिए कहता है।


3
इस उत्तर को पूरक करने के लिए: .pyc फ़ाइल को शब्द के सबसे सख्त अर्थों में संकलित नहीं किया गया है, क्योंकि यह मूल मशीन कोड नहीं है। यह है, जैसा कि @tomdachi ने लिखा है, अजगर-विशिष्ट-बाइट-कोड (एक जावा .class के समान), यही कारण है कि इसे अभी भी अजगर दुभाषिया को बाहर निकालने की आवश्यकता है।
पियरे-एंटोनी

वास्तव में, pyc केवल तभी उत्पन्न की गई थी जब आप py फ़ाइल आयात करते हैं। तो यह pyc फ़ाइल को चलाने के लिए बेकार है!
的 患有 患有 患有 患有 患有 为了 为了 为了 为了 为了

2

संकलित .pyc python3 फ़ाइलों को संकलित करने के लिए, मैंने uncompyle6अपने वर्तमान Ubuntu OS में निम्नानुसार उपयोग किया है:

  1. अनलाइल 6 की स्थापना:

    pip3 install uncompyle6
  2. .Pyc फ़ाइल से .py फ़ाइल बनाने के लिए चलाएँ:

    uncompyle6 -o . your_filename.pyc
  3. स्वचालित रूप से एक नई .py फ़ाइल उसी मौजूदा .pyc फ़ाइल नाम के साथ बनाई जाएगी।


-1

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

पायथन एक व्याख्या की गई भाषा है, जैसा कि एक संकलित के विपरीत है, हालांकि बाइटेकोड संकलक की उपस्थिति के कारण भेद धुंधला हो सकता है। कंपाइलिंग का मतलब आमतौर पर मशीन कोड में परिवर्तित होता है जो सबसे तेज चलता है। लेकिन व्याख्याकार मानव-पठनीय पाठ लेते हैं और इसे निष्पादित करते हैं। वे एक मध्यवर्ती चरण के साथ ऐसा कर सकते हैं।

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

उपरोक्त उदाहरण के लिए एक अपवाद है। यदि आप #! /usr/bin/env pythonपहली पंक्ति में रखते हैं myprog.py, तो इसे क्रियान्वित करें, और फिर myprog.pyस्वयं द्वारा चलाएं ।


1
उबंटू पूछने के लिए आपका स्वागत है ! यह एक अच्छा स्पष्टीकरण है कि pycफाइलें क्यों मौजूद हैं लेकिन आपने इस सवाल का जवाब नहीं दिया है कि उन्हें कैसे चलाना है। यह एक बहुत ही विस्तारित टिप्पणी के रूप में योग्य हो सकता है, उत्तर नहीं । कृपया वास्तविक उत्तर जोड़ने के लिए अपनी पोस्ट संपादित करें।
मेलेबियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.