Linux में, Python को #!
(Shebang) लाइन की आवश्यकता हो सकती है या नहीं भी हो सकती है । यह इस बात पर निर्भर करता है कि पायथन कोड को कैसे संभाला जाता है, या तो पायथन इंटरएक्टिव मोड में कोड चला रहा है या पायथन स्क्रिप्ट में।
पाइथन इंटरएक्टिव मोड उपयोगकर्ता को सीधे पाइथन कोड टाइप करने और चलाने की अनुमति देता है, जिसे शेबंग लाइन की आवश्यकता नहीं होती है। इंटरेक्टिव मोड चलाने के लिए, एक टर्मिनल खोलें और python
Python 2.X के लिए या python3
Python 3.X के लिए टाइप करें।
$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python3
Python 3.4.3 (default, Oct 14 2015, 20:33:09)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
पायथन स्क्रिप्ट उपयोगकर्ता को एक सादे पाठ फ़ाइल में पायथन कोड लिखने और सहेजने की अनुमति देती है, फिर बाद में कोड चलाएं। इसके लिए शेबग लाइन की आवश्यकता हो सकती है या नहीं। हालांकि, दो ज्ञात कारण हैं जब लिनक्स में पायथन लिपि का उपयोग करने के लिए शेलबैंग लाइन की आवश्यकता होती है।
एक निष्पादन योग्य स्क्रिप्ट में पायथन कोड चलाने के लिए यानी यह परिभाषित करता है कि कोड को कैसे चलाया जाना चाहिए और किस दुभाषिया का उपयोग करना चाहिए;
पायथन कोड को पायथन के विशिष्ट संस्करण के संबंध में चलाने के लिए अर्थात ऐसे कोड चलाएं जो पायथन 2.X या पायथन 3.X के साथ संगत हों
पायथन लिपियों के साथ अभ्यास करें
नीचे फाइलों की सूची और सामग्री दी गई है, जिनका उपयोग मैंने ऐसे मामलों को दिखाने के लिए किया है, जो #!
(शेबंग) लाइन आवश्यक है या आवश्यक नहीं है।
$ ls -ln *.py
-rw-rw-r-- 1 1000 1000 94 Dec 14 18:37 hello1.py
-rwxrwxr-x 1 1000 1000 116 Dec 14 18:37 hello2e.py
-rw-rw-r-- 1 1000 1000 116 Dec 14 18:37 hello2.py
-rwxrwxr-x 1 1000 1000 117 Dec 14 18:37 hello3e.py
-rwxrwxr-x 1 1000 1000 120 Dec 14 18:37 hello3m.py
-rw-rw-r-- 1 1000 1000 117 Dec 14 18:37 hello3.py
$ file *.py
hello1.py: ASCII text
hello2e.py: Python script, ASCII text executable
hello2.py: Python script, ASCII text executable
hello3e.py: Python script, ASCII text executable
hello3m.py: Python script, UTF-8 Unicode (with BOM) text executable
hello3.py: Python script, ASCII text executable
hello1.py
केवल स्रोत कोड होता है।
import sys
sys.stdout.write("Hello from Python %s\n" % (sys.version,))
print("Hello, World!")
hello2.py
इसमें सोर्स कोड और शेबबैंग लाइन शामिल है।
#!/usr/bin/env python
import sys
sys.stdout.write("Hello from Python %s\n" % (sys.version,))
print("Hello, World!")
hello2e.py
के रूप में ही होता है hello2.py
और निष्पादन योग्य बनाया जाता है।
hello3.py
इसमें समान है hello2.py
, सिवाय इसके कि पहली पंक्ति का नाम बदलकर पायथन 3 के साथ चलने के लिए अनुकूलित किया गया है #!/usr/bin/env python3
।
hello3e.py
के रूप में ही होता है hello3.py
और निष्पादन योग्य बनाया जाता है।
hello3m.py
के रूप में ही होता है hello3.py
और निष्पादन योग्य बनाया है, के साथ सहेजा छोड़कर Write Unicode BOM
पाठ संपादक यानी Mousepad में विकल्प।
इस बिंदु से परे, उपयोगकर्ता पायथन लिपियों को चलाने के लिए दो तरीकों के साथ प्रस्तुत किया जाएगा। दोनों विधियों का प्रदर्शन नीचे दिया गया है।
विधि 1: पायथन प्रोग्राम के साथ चलाएँ
पायथन 2 और पायथन 3 के साथ स्रोत कोड चलाते समय कमांड और आउटपुट नीचे दिए गए हैं।
$ python hello1.py
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2]
Hello, World!
$ python3 hello1.py
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09)
[GCC 4.8.4]
Hello, World!
पायथन के दोनों संस्करण स्क्रिप्ट को सफलतापूर्वक चलाने में सक्षम थे। इसलिए, पायथन स्क्रिप्ट को कमांड या कमांड के माध्यम से चलाने के दौरान शेलंग लाइन की आवश्यकता नहीं होती है ।python
python3
विधि 2: पायथन स्क्रिप्ट के रूप में चलाएँ
नीचे दिए गए आदेश और आउटपुट हेबंग लाइन के साथ स्रोत कोड चलाते हैं, जो न तो अनुकूल हैं, नॉन-निष्पादन योग्य और निष्पादन योग्य मामलों सहित पायथन 2 और पायथन 3।
$ ./hello1.py
bash: ./hello1.py: Permission denied
$ ./hello2.py
bash: ./hello2.py: Permission denied
$ ./hello3.py
bash: ./hello3.py: Permission denied
$ ./hello2e.py
Hello from Python 2.7.6 (default, Jun 22 2015, 18:00:18)
[GCC 4.8.2]
Hello, World!
$ ./hello3e.py
Hello from Python 3.4.3 (default, Oct 14 2015, 20:33:09)
[GCC 4.8.4]
Hello, World!
पहले तीन स्क्रिप्ट विफल हो गए हैं क्योंकि ये स्क्रिप्ट गैर-निष्पादन योग्य हैं, भले ही शेबंग लाइन होने या न होने के लिए (समर्थन प्रमाण के लिए, नीचे अतिरिक्त उदाहरण देखें)। अंतिम दो लिपियों में शेबंग लाइन है और यह निष्पादन योग्य हैं।
जाहिर है, एक स्क्रिप्ट जिसे निष्पादन योग्य बनाया गया है वह अनिवार्य रूप से शेबंग लाइन के बिना बेकार है। इसलिए, जब एक निष्पादन योग्य स्क्रिप्ट में पायथन कोड्स को चलाया जाता है, तो शेबबंग लाइन की आवश्यकता होती है और स्क्रिप्ट को निष्पादन योग्य होना चाहिए।
जब शेबंग काम नहीं करता है
मेरे तैयार और परीक्षण किए गए उदाहरण में, hello3m.py
एक निष्पादन योग्य स्क्रिप्ट के रूप में चल रहा है, विफल हो गया है और एक त्रुटि लौटा दी है।
$ ./hello3m.py
./hello3m.py: line 1: #!/usr/bin/env: No such file or directory
यह एक ज्ञात सीमा है कि शेबंग काम नहीं करता है या अमान्य हो जाता है। जब एक फाइल को यूनिकोड BOM (बाइट ऑर्डर मार्क) के रूप में सहेजा जाता है, तो यह एक निष्पादन योग्य पायथन स्क्रिप्ट के रूप में सामान्य रूप से चलने में विफल हो जाएगा।
अतिरिक्त उदाहरण
इस अतिरिक्त उदाहरण को केवल सहायक प्रमाण के रूप में माना जाएगा। उपयोगकर्ता को इस उदाहरण को चलाने से बचना चाहिए, हालांकि परिणाम हानिरहित है।
मैंने एक और फाइल बनाई है hello1e.py
जिसका नाम है , जिसमें समान hello1.py
और निष्पादन योग्य बनाया गया है। इस स्क्रिप्ट को चलाने से वाक्य रचना त्रुटि हुई।
$ ./hello1e.py
./hello1e.py: line 2: syntax error near unexpected token `"Hello from Python %s\n"'
./hello1e.py: line 2: `sys.stdout.write("Hello from Python %s\n" % (sys.version,))'
इस स्क्रिप्ट को चलाते समय, सबसे पहले, माउस कर्सर को प्लस-साइन में बदल दिया जाएगा और दिखने में कुछ भी नहीं होगा। जब तक मैंने डेस्कटॉप या टर्मिनल विंडो पर क्लिक नहीं किया तब तक सिंटैक्स त्रुटि नहीं दिखाई जाएगी। फिर, यह स्क्रिप्ट स्क्रिप्ट sys
के समान निर्देशिका में एक फ़ाइल बनाएगी ।
$ file sys
sys: PostScript document text conforming DSC level 3.0, Level 1
sys
फ़ाइल, पोस्टस्क्रिप्ट फ़ाइल के रूप में पहचान की गई है फाइल एक्सटेंशन के बिना। इस फाइल को डॉक्यूमेंट व्यूअर यानी इविसन में खोला जा सकता है, और फाइल में वास्तव में उस विंडो का स्क्रीनशॉट होता है, जिसे मैंने पहले क्लिक किया था। मेरे अनुभव में, फ़ाइल कुछ मेगाबाइट जितनी बड़ी हो सकती है।
एक बार फिर, शेबंग लाइन की आवश्यकता है और पायथन स्क्रिप्ट को एक निष्पादन योग्य स्क्रिप्ट के रूप में चलाने पर स्क्रिप्ट को निष्पादन योग्य होना चाहिए। अन्यथा, स्क्रिप्ट ऊपर बताए अनुसार गलत व्यवहार करेगी।
अतिरिक्त नोट्स
शब्द "निष्पादन योग्य" या "निष्पादन योग्य होना चाहिए" स्क्रिप्ट को चलाने की अनुमति को संदर्भित करता है। यह chmod +x FILENAME
टर्मिनल में कमांड चलाकर , या फ़ाइल प्रबंधक के भीतर "इस फाइल को प्रोग्राम के रूप में चलाने की अनुमति दें" या गुण विंडो में कुछ समान की जाँच करके किया जाता है ।
जबकि अन्य मौजूदा जवाबों में लगभग सब कुछ शामिल था, इस उत्तर ने मामले को समझाने के लिए व्यावहारिक उदाहरणों का उपयोग करके अलग दृष्टिकोण लिया है। कोड सिंटैक्स को देखभाल के साथ लिखा गया है, जैसे कि उदाहरण पायथन 2 या पायथन 3 के साथ चलाया जा सकता है, जैसा कि यह है।
पायथन कोड को विंडोज पर पायथन का उपयोग करने और यूनिक्स प्लेटफार्मों पर पायथन का उपयोग करने से अनुकूलित किया गया है, सर्वव्यापी "हैलो, वर्ल्ड!" के अतिरिक्त एक-लाइन कोड के साथ। कार्यक्रम।
सभी कोड और कमांड पूरी तरह से परीक्षण किए गए हैं और Xubuntu 14.04 सिस्टम में काम करता है, जिसमें डिफ़ॉल्ट रूप से पायथन 2.7 और पायथन 3.4 स्थापित थे।
.
किस तरह की फाइल है, यह निर्धारित करने के लिए फाइल के विस्तार (उसके बाद वाला हिस्सा ) पर निर्भर करता है। यहां तक कि विंडोज इससे दूर जा रहा है: Microsoft Word फ़ाइल की पहली कुछ पंक्तियों की जाँच करें, और यह बताएगा कि यह वास्तव में, Microsoft Word फ़ाइल है।