Linux/Unix 後臺執行./xxx.py文件,報錯 syntax error near unexpected token ' xxxxxx'

python腳本中的#!/usr/bin/python


估計有不少人注意過一些python腳本開頭有這麼行東東:
#!/usr/bin/python
它是用來幹嘛的?貌似沒有它對腳本功能也沒啥影響。它是用來指定用什麼解釋器運行腳本以及解釋器所在的位置。

以hello.py爲例,腳本內容如下:

def test():
        print 'hello, world'

if __name__ == "__main__":
        test()

運行腳本:
python3 hello.py
輸出:
hello, world

換一種方法運行:
./hello.py
會提示出錯,文件無可執行權限:
-bash: ./hello.py: Permission denied

將文件設爲可執行:
chmod +x hello.py
繼續運行:
./hello.py
提示:
./hello.py: line 1: syntax error near unexpected token `('
./hello.py: line 1: `def test():'
那是因爲系統默認該腳本是shell腳本,把它當shell語句執行,當然失敗了。

在前面加上
#!/usr/bin/python3
申明:這是個python3腳本,要用python解釋器來運行:
./hello.py
輸出:
hello, world

這個東東常用在cgi腳本中,Apache(阿帕奇:WEB服務器軟件)啓動cgi腳本時就靠它來知道這是個python腳本,執行它需要的python解釋器路徑在哪裏。
有時候寫 #!/usr/bin/python3 還是不行,很簡單,因爲python解釋器沒有裝在/usr/bin/目錄,改成其所在目錄就行了,或者更通用的方法是:
#!/usr/bin/env python3

或者:如果你在windows裏寫的shell腳本放到linux系統裏運行就可以會提示如下錯誤syntax error near unexpected token `...這是因爲兩個平臺下面的換行符不一樣導致的。所以需要轉換下格式,notepad++就有這個功能。

1.首先打開notepad++,讓腳本顯示所有符號,發現是CR LF

視圖—>顯示符號—>顯示所有符號

2.我們需要將windows的格式轉爲linux格式,做如下操作即可。

編輯->檔案格式轉換->轉換爲UNIX格式

3.轉換之後,發現回車換行符就變了。再放入linux就不會報錯了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章