#!/usr/bin/python和#!/usr/bin/env 的區別
#!/usr/bin/python
通常在一個.py文件開頭都會有這個語句
它只在Linux系統下生效,意思是當作為可執行文件運行時調用的解釋器的位置
上面代碼的意思是調用/usr/bin/
下的Python來作為解釋程序,同樣,你也可以寫#!/usr/bin/python3
或#!/usr/bin/python2
如果不是默認安裝位置這個地方可能就找不到,那么文件就是報錯
所以就有了另一種寫法
#!/usr/bin/env python 這表示調用系統環境變量里的Python
也就是Path的環境變量設置問題,也可以寫成
#!/usr/bin/env python2
#!/usr/bin/env python3
如果你用python a.py
來運行就是手動指定了解釋器,這一行就不會生效了
#!/usr/bin/python3
(1)如果調用python腳本時,使用: python script.py #!/usr/bin/python 被忽略,等同於注釋。
(2)如果調用python腳本時,使用:(需要添加權限)添加可執行權限 chmod +x test.py ./script.py #!/usr/bin/python 指定解釋器的路徑。
Python 頭部 #!/usr/bin/python 和 #!/usr/bin/env 的區別
大部分python文件的頭部都會寫上 #!/usr/bin/python 或者 #!/usr/bin/env ,這個語句主要和運行模式有關,
如果我們用普通運行模式例如(linux) : python *.py 那么這個語句在此運行模式下無效。如果想讓python程序像普通程序一樣運行,例如:./*.py (文件要有可執行權限chmod a+x *.py),這個語句就起作用了,他用來為腳本語言指定解釋器,通常認為用 #!/usr/bin/env python 要比 #!/usr/bin/python 更好,因為 python 解釋器有時並不安裝在默認路徑,例如在虛擬環境中。
解釋:
#!/usr/bin/env python
這種寫法在你機器上安裝了多個版本的python的時候有意義,這樣聲明的時候,會去取你機器的 PATH 中指定的第一個 python 來執行你的腳本。如果這時候你又配置了虛擬環境的話,那么這樣寫可以保證腳本會使用你虛擬環境中的 python 來執行。
#!/usr/bin/python
表示寫死了就是要 /usr/bin/python 這個目錄下 python 來執行你的腳本。這樣寫程序的可移植性就差了,如果此路徑下python命令不存在就會報錯。
所以一般情況還是用第一種寫法。
所以一般情況還是用第一種寫法。