अजगर फ़ाइल एक्सटेंशन, .pyc .pyd .pyo के लिए क्या खड़ा है?


436

इन अजगर फ़ाइल एक्सटेंशन का क्या मतलब है?

  • .pyc
  • .pyd
  • .pyo

उनके बीच क्या अंतर हैं और वे * .py फ़ाइल से कैसे उत्पन्न होते हैं?

जवाबों:


481
  1. .py: यह आम तौर पर इनपुट स्रोत कोड है जो आपने लिखा है।
  2. .pyc: यह संकलित बायटेकोड है। यदि आप एक मॉड्यूल का आयात करते हैं, तो अजगर एक *.pycफ़ाइल का निर्माण करेगा, जिसमें बाद में इसे फिर से आसान (और तेज) आयात करने के लिए बाईटेकोड होता है।
  3. .pyo: यह एक फ़ाइल प्रारूप था जिसका उपयोग *.pycअनुकूलन ( -O) ध्वज के साथ बनाई गई फ़ाइलों के लिए पायथन 3.5 से पहले किया गया था । (नीचे नोट देखें)
  4. .pyd: यह मूल रूप से एक विंडोज़ dll फ़ाइल है। http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

इसके अलावा .pycबनाम पर कुछ और चर्चा के लिए .pyo, यहां देखें: http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (मैंने नीचे दिया गया महत्वपूर्ण भाग कॉपी किया है)

  • जब पायथन दुभाषिया को -O ध्वज के साथ लगाया जाता है, तो अनुकूलित कोड उत्पन्न होता है और '.pyo' फ़ाइलों में संग्रहीत होता है। वर्तमान में ऑप्टिमाइज़र ज्यादा मदद नहीं करता है; यह केवल मुखर बयान निकालता है। जब -O का उपयोग किया जाता है, तो सभी बाइटकोड को अनुकूलित किया जाता है; .pyc फाइलों को नजरअंदाज किया जाता है और .py फाइलें अनुकूलित बायोटेक को संकलित की जाती हैं।
  • पायथन दुभाषिया (-OO) के लिए दो-ओ झंडे पास करने से बाइटकोड कंपाइलर को अनुकूलन करने का कारण होगा जो कुछ दुर्लभ मामलों में खराबी कार्यक्रमों के परिणामस्वरूप हो सकता है। वर्तमान में केवल __doc__तार को बाइटकोड से हटा दिया जाता है, जिसके परिणामस्वरूप अधिक कॉम्पैक्ट '.pyo' फाइलें होती हैं। चूंकि कुछ प्रोग्राम इन उपलब्ध होने पर भरोसा कर सकते हैं, आपको केवल इस विकल्प का उपयोग करना चाहिए यदि आप जानते हैं कि आप क्या कर रहे हैं।
  • जब कोई '.pyc' या '.pyo' फ़ाइल से पढ़ा जाता है, तो वह '' .py '' फ़ाइल से आने वाली फ़ाइल से कोई प्रोग्राम तेजी से नहीं चलता है; एकमात्र चीज़ जो '.pyc' या '.pyo' फ़ाइलों के बारे में तेज़ है, वह गति है जिसके साथ वे लोड किए गए हैं।
  • जब किसी स्क्रिप्ट को कमांड लाइन पर अपना नाम देकर चलाया जाता है, तो स्क्रिप्ट के लिए बायटेकोड कभी भी '.pyc' या '.py' फ़ाइल में नहीं लिखा जाता है। इस प्रकार, किसी स्क्रिप्ट के स्टार्टअप समय को उसके अधिकांश कोड को एक मॉड्यूल में ले जाने और एक छोटी बूटस्ट्रैप स्क्रिप्ट होने से कम किया जा सकता है जो उस मॉड्यूल को आयात करता है। कमांड लाइन पर सीधे '.pyc' या '.pyo' फ़ाइल का नाम देना भी संभव है।

ध्यान दें:

2015-09-15 पर पायथन 3.5 रिलीज ने PEP-488 को लागू किया और .pyoफाइलों को खत्म कर दिया । इसका मतलब यह है कि .pycफाइलें अडॉप्टेड और ऑप्टिमाइज्ड बायटेकोड दोनों को दर्शाती हैं।


2
क्या dll फाइलें पायथन स्क्रिप्ट या c / c ++ स्क्रिप्ट से उत्पन्न होती हैं?
— यांकी ट्विज़ी

1
@yankitwizzy: हाँ। उन्हें C / C ++ कोड से जनरेट किया जाना चाहिए। फ़ाइल मशीन कोड में होनी चाहिए, इसलिए यह सीधे अजगर से नहीं हो सकती है।
— बिल लिंच

"वर्तमान में ऑप्टिमाइज़र बहुत मदद नहीं करता है; यह केवल मुखर बयानों को हटा देता है।" क्या तुम इसके बारे में निश्चित हो? कोशिश करेंdef f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
— जोर्ज लीताओ

@ JCLeitão: क्या मुझे यकीन है कि क्या है? क्या आप बता सकते हैं कि आपको क्या लगता है कि आपका उदाहरण केवल टिप्पणी में कोड को फेंकने के बजाय दिखाता है।
— बिल लिंच

9
ध्यान दें कि पायथन 3.5 में , PEP 488 को लागू किया गया है, जो .pyoफ़ाइलों की अवधारणा को दूर करता है । यहां तक ​​कि अनुकूलित बायटेकोड .pycविस्तार पायथन 3.5 के साथ समाप्त होता है , फिर।
— माइकल करी

228
  • .py - नियमित स्क्रिप्ट
  • .py3 - (शायद ही कभी इस्तेमाल किया गया) पायथन 3 स्क्रिप्ट। Python3 स्क्रिप्ट आमतौर पर ".py" नहीं ".py3" के साथ समाप्त होती हैं, लेकिन मैंने देखा है कि कुछ बार
  • .पाइक - संकलित स्क्रिप्ट (बाइटकोड)
  • .py - अनुकूलित pyc फ़ाइल (Python3.5 के रूप में, पायथन केवल pyo और py के बजाय pyc का उपयोग करेगा)
  • .pyw - पाइथन स्क्रिप्ट को विंडो मोड में चलाने के लिए, बिना कंसोल के; pythonw.exe के साथ निष्पादित किया गया
  • .pyx - साइथन src को C / C ++ में बदला जाएगा
  • .Pyd - पायथन लिपि को विंडोज DLL के रूप में बनाया गया है
  • .pxd - साइथन लिपि जो C / C ++ हेडर के बराबर है
  • .pxi - MyPy स्टब
  • .py - स्टब फ़ाइल ( पीईपी 484 )
  • .pyz - पायथन स्क्रिप्ट संग्रह ( पीईपी 441 ); यह मानक पायथन स्क्रिप्ट हेडर के बाद द्विआधारी रूप में संकुचित पाइथन लिपियों (ज़िप) वाली स्क्रिप्ट है
  • .pywz - MS-Windows ( PEP 441 ) के लिए पायथन स्क्रिप्ट संग्रह ; यह मानक पायथन स्क्रिप्ट हेडर के बाद द्विआधारी रूप में संकुचित पाइथन लिपियों (ज़िप) वाली स्क्रिप्ट है
  • .py [कॉड] - ".ignignore" में वाइल्डकार्ड संकेतन, जिसका अर्थ है कि फ़ाइल ".pyc", ".pyo", या ".pyd" हो सकती है।
  • .pth - एक पथ विन्यास फ़ाइल; इसकी सामग्री को जोड़ने के लिए अतिरिक्त आइटम (प्रति पंक्ति एक) हैं sys.path। siteमॉड्यूल देखें ।

अतिरिक्त अजगर फ़ाइल एक्सटेंशन (ज्यादातर दुर्लभ और अनौपचारिक) की एक बड़ी सूची http://dcjtech.info/topic/python-file-extensions/ पर देखी जा सकती है


11
यह ध्यान दिया जाना चाहिए कि «.pyx» फ़ाइल काफी पायथन स्रोत नहीं है जिसे C में परिवर्तित किया गया है, बल्कि साइथन स्रोत कोड (यानी: C में परिवर्तित होने की प्रतीक्षा कर रहा है)
— फ्रेड ओस्ट्रैथ

PYI एक्सटेंशन में "I" क्या दर्शाता है? "शामिल करें" / "कार्यान्वयन" / "इंटरफ़ेस"?
— क्रिसफ्रीमैन

1
.pyw का अर्थ है पाइथन स्क्रिप्ट जो एक विंडो बनाता है, न कि पायथन 4 विंडोज। .pyw को * nix
— Kotauskas

1
सामान्य तौर पर .pyw विंडोेड मोड में चलने वाली स्क्रिप्ट है, यानी बिना कंसोल आउटपुट के। @VladislavToncharov के रूप में वे सबसे प्लेटफार्मों पर चलाए जा सकते हैं जो अजगर स्थापित होने पर समर्थन करते हैं ।
— स्टीव बार्न्स

1
इस जवाब पर .pthफाइलों पर चर्चा होनी चाहिए ।
— विम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.