虛擬環境是一個將不同項目所需求的依賴分別放在獨立的地方的一個工具,它給這些工程創建虛擬的Python環境。它解決了“項目X依賴于版本1.x,而項目Y需要項目4.x”的兩難問題,而且使你的全局site-packages目錄保持干凈和可管理。
關于virtualenv怎么使用請看官方介紹:http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html。
這里想談的問題是——它是怎么做到的?How?
激活virtualenv的方式是運行這行代碼:source venv/bin/activate
,打開activate腳本,會發現,原來如此:
可以看出,它只是很簡單地,在原來的環境變量的最前面,增加了自己關于python庫的運行環境而已。
比如我們在virtualenv里運行python這個可執行文件,會首先在當前目錄找,找不到再去系統路徑(PATH環境變量)里面找;由于在通過PATH查找是從頭到尾順序找,直到找到第一個符合的程序來執行,所以把虛擬環境的可執行文件目錄放在最前面,自然執行的都是自己當前所代表的python環境了!
這應該就是virtualenv的本質,其它的腳本代碼是一些細節的東西,有興趣可以自行研究之。
里面的設計有挺多精巧之處的,比如,真的要拷貝所有的python可運行文件嗎?這樣太浪費空間了,且看看virtualenv是怎么做的:
其實就是做了一個軟鏈接,保證可用又省空間!(從上圖可以看出,一個鏈接只占用了7個字節)
新聞熱點
疑難解答