標籤:== 功能 name 目錄 路徑 那是 chmod env 輸出
#!/usr/bin/python
指定用什麼解譯器運行指令碼以及解譯器所在的位置
# -*- coding: utf-8 -*-
用來指定檔案編碼為utf-8的
PEP 0263 -- Defining Python Source Code Encodings
http://www.python.org/dev/peps/pep-0263/
估計有不少人注意過一些python指令碼開頭有這麼行東東:
#!/usr/bin/python
它是用來幹嘛的?貌似沒有它對指令碼功能也沒啥影響。它是用來指定用什麼解譯器運行指令碼以及解譯器所在的位置。
以test.py為例,指令碼內容如下:
def test():
print ‘hello, world‘
if __name__ == "__main__":
test()
運行指令碼:
python test.py
輸出:
hello, world
換一種方法運行:
./test.py
會提示出錯,檔案無可執行許可權:
-bash: ./test.py: Permission denied
將檔案設為可執行:
chmod +x test.py
繼續運行:
./test.py
提示:
./test.py: line 1: syntax error near unexpected token `(‘
./test.py: line 1: `def test():‘
那是因為系統預設該指令碼是shell指令碼,把它當shell語句執行,當然失敗了。
在前面加上
#!/usr/bin/python
申明l這是個python指令碼,要用python解譯器來運行:
./test.py
輸出:
hello, world
這個東東常用在cgi指令碼中,apache啟動cgi指令碼時就靠它來知道這是個python指令碼,執行它需要的python解譯器路徑在哪裡。
有時候寫 #!/usr/bin/python 還是不行,很簡單,因為python解譯器沒有裝在/usr/bin/目錄,改成其所在目錄就行了,或者更通用的方法是:
#!/usr/bin/env python
python #!/usr/bin/python作用