#!/usr/bin/python和#!/usr/bin/env 的區別(轉)


#!/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命令不存在就會報錯。

所以一般情況還是用第一種寫法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM