2011-09-26 10 views
12

संभव डुप्लिकेट बनाने के लिए:
Calling a python script from command line without typing “python” firstकैसे अजगर स्क्रिप्ट स्वयं निष्पादन योग्य

मैं

bash$ chmod +x script.py 

की कोशिश की है काम नहीं करता। मुझे

#!usr/bin/env python 

स्क्रिप्ट की शुरुआत में भी याद रखना याद रखें।

bash$ ./script.py 

कुछ नहीं करता है, यह सिर्फ एक क्रॉस करने के लिए अपने कर्सर बदलता है lol

अद्यतन: मैं ठीक करने के बाद

#!/usr/bin/python  

मैं भी कोशिश की है

chmod a+x script.py 

अब तक कुछ भी नहीं। मेरी स्क्रिप्ट में आयात कमांड हैं और sys.argv का उपयोग करता है ... मैंने इस link पर निर्देश का पालन किया है (पृष्ठ के अंत को देखें)। कुछ भी काम नहीं करता

+1

आपकी स्क्रिप्ट वास्तव में क्या करती है?क्या आपने इसे hello.py से आजमाया है? मैं आमतौर पर #!/Usr/bin/पायथन और chmod 755 hello.py का उपयोग करता हूं। –

+1

bash $ chmod ** a + x ** script.py। 'कहना होगा *** *** *** स्क्रिप्ट निष्पादित करने के लिए मिलता है। –

+2

बस FYI: कारण आपका कर्सर क्रॉस में बदल रहा है यह है कि आपकी स्क्रिप्ट को शेल स्क्रिप्ट के रूप में व्याख्या किया जा रहा है क्योंकि आपने शेबैंग को गड़बड़ कर दिया है (देखें @ टोकन मैकगुय का जवाब)। इसका मतलब है कि आपका "आयात" कथन 'आयात' आदेश चला रहा है, जो एक स्क्रीनशॉट लेता है। अब आपके पास नामित 'sys', 'os', या कुछ समान नाम के आसपास एक पीएनजी फ़ाइल हो सकती है ... –

उत्तर

16

यहाँ संभावना के किसी न किसी के क्रम में, चीजों की सूची की कोशिश करने के लिए है:

  • सुनिश्चित करें कि शेबांग लाइन में सही वाक्यविन्यास है (आपने इसे पहले से ही किया है, #!/usr/bin/python)।
  • सुनिश्चित करें कि शेबैंग फ़ाइल में पहली लाइन है (यहां तक ​​कि एक खाली रेखा या इसके ऊपर कोई टिप्पणी नहीं)।
  • सत्यापित करें कि /usr/bin/python वास्तव में मौजूद है और काम करता है। आपका पायथन दुभाषिया कहीं और स्थापित किया जा सकता है। एक प्रॉम्प्ट पर /usr/bin/python टाइप करें और सुनिश्चित करें कि पायथन शुरू होता है। which python टाइप करें यदि आप नहीं जानते कि यह कहां स्थापित है।
  • यदि . आपके PATH (यह नहीं हो सकता है) में नहीं है, तो आपको अपनी स्क्रिप्ट ./script.py के साथ चलाना चाहिए क्योंकि खोल डिफ़ॉल्ट रूप से मौजूदा निर्देशिका में कमांड की तलाश नहीं करता है।
  • सुनिश्चित करें कि निष्पादन योग्य बिट आपकी स्क्रिप्ट पर सेट है (+x, ls -l के साथ सत्यापित करें)।
  • सुनिश्चित करें कि आप अपने संपादक में केवल एलएफ लाइन लाइन का उपयोग कर रहे हैं। शैल picky हो सकता है, और आपकी Shebang लाइन केवल एलएफ के साथ खत्म होना चाहिए और सीआरएलएफ नहीं। यदि आप Windows टेक्स्ट एडिटर का उपयोग कर रहे हैं, तो यह केवल एक समस्या होने की संभावना है, लेकिन यह जांच के लायक हो सकता है।
  • सुनिश्चित करें कि आपका टेक्स्ट एडिटर फ़ाइल की शुरुआत में चुपचाप यूटीएफ -8 बीओएम डालने वाला नहीं है। दोबारा, यह केवल तभी संभव है जब आप विंडोज़ पर नोटपैड का उपयोग कर रहे हों।
+1

अंतिम 2 अंक मेरे जीवन को बचाया। – BPm

10

"शेबांग" को निष्पादन योग्य के लिए पूरा पथ होना चाहिए। आप env, जो अच्छा है कॉल कर रहे हैं, लेकिन आप इसे पूरा पथ नहीं दिया है: तो जैसे अपनी स्क्रिप्ट शुरू:

#!/usr/bin/env python 
#^
+0

मुझे इसे मारो। आपको अभिशाप, टोकन मैकगुय ... टक्कर। – krs1

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