2011-09-26 87 views
12

可能重複:
Calling a python script from command line without typing 「python」 first如何使Python腳本自執行

我已經試過

bash$ chmod +x script.py 

不起作用。我還記得把

#!usr/bin/env python 

在腳本的開始。

bash$ ./script.py 

不做任何事情,它只是改變了我的光標在十字架上笑

更新:我已經固定

#!/usr/bin/python  

我也試過

chmod a+x script.py 

依然沒有。我的腳本具有導入命令並使用sys.argv ...我已按照此link上的說明(查看頁面的末尾)。沒有什麼工作

+1

什麼是你的腳本實際上做?你用hello.py試過這個嗎?我通常使用#!/ usr/bin/python和chmod 755 hello.py。 –

+1

bash $ chmod ** a + x ** script.py。 '要說***誰可以執行腳本。 –

+2

只是供參考:你的光標變成十字的原因是你的腳本被解釋爲shell腳本,因爲你弄亂了shebang(請參閱@ TokenMacGuy的答案)。這意味着您的「導入」語句正在運行命令「import」,它需要截圖。你現在可能有一個名爲'sys','os'或類似的東西的PNG文件... –

回答

16

這裏是事情的清單嘗試,在可能的粗糙順序:

  • 確保shebang行有正確的語法(您已經完成了這項工作,#!/usr/bin/python)。
  • 確保家當是文件中的第一(甚至不是一個空行或它上面的註釋)。
  • 驗證/usr/bin/python實際存在和作品。你的Python解釋器可能安裝在其他地方。在提示符下鍵入/usr/bin/python並確保Python啓動。如果您不知道它的安裝位置,請輸入which python
  • 如果.不在您的PATH(可能不是),那麼您必須運行./script.py的腳本,因爲shell默認情況下不會在當前目錄中查找命令。
  • 確保可執行位上設置你的腳本(+x,與ls -l驗證)。
  • 確保您在編輯器中僅使用了僅LF行結束符。貝殼可能會挑剔,而你的shebang線必須僅以LF結束而不是CRLF。如果您使用的是Windows文本編輯器,這可能只是一個問題,但可能值得您檢查。
  • 請確保您的文本編輯器沒有默默地在文件的開頭插入UTF-8 BOM。再說一次,如果你在Windows上使用記事本,這個可能性就很大。
+1

最後2點救了我的命。 – BPm

10

了「認領」需要包含完整的可執行文件路徑。你打電話env,這是很好的,但是你有沒有給它的完整路徑:啓動腳本,像這樣:

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

打我吧。詛咒你,TokenMacGuy ...碰撞。 – krs1