在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ sys.path和os.environ['PATH']啥區(qū)別?

sys.path和os.environ['PATH']啥區(qū)別?

如題。分別打印了一下,二者是不同,但還總結(jié)不出啥區(qū)別。。

回答
編輯回答
獨特范

圖片描述

用windows里的變量舉例,sys.path是python的package path,而os.environ['PATH']就是下面的系統(tǒng)變量

2017年10月24日 01:52
編輯回答
夏夕

sys.path是python package的加載目錄,比如說定義flask從哪個目錄加載。
而PATH是環(huán)境變量,是系統(tǒng)自定義的,不管是Windows還是Linux,PATH相關(guān)的目錄是可執(zhí)行文件的目錄,比如你在命令行執(zhí)行java,在沒有指定絕對路徑的前提下,加載的目錄是定義在PATH里的
題主我更新下答案
sys.path其實定義了一個python package加載的目錄
比如我在2個目錄下有2個同名的python文件,比如hello.py,見下圖

clipboard.png
上圖在test目錄下分別有2個package t1和t2,其中都有重名的文件hello.py

你可以把test想象成別的小伙伴開發(fā)的package
我們現(xiàn)在電腦上的開發(fā)目錄是/data,注意,這個跟引用的package完全是2個不同的目錄

clipboard.png

仔細看圖中的代碼,通過操作sys.path來設定package的加載順序。
實際開發(fā)中,python的加載package順序可以通過配置sys.path來實現(xiàn)不同的package加載。
雖然可以這么做,但請注意,在程序運行期間動態(tài)的修改sys.path是一個非常不好的習慣,會導致很多難以排查的bug。一般有特殊的加載順序要求的,需要通過設置PYTHONPATH來實現(xiàn)。
sys.path除了PYTHONPATH定義的module之外,還有內(nèi)置的built in加載模塊。

如果對這部分的實現(xiàn)很感興趣,可以讀下python library的importlib一章節(jié)。

clipboard.png

2018年1月24日 09:54