【01】爲什麼需要虛擬環境? 爲什麼需要虛擬環境?

爲什麼需要虛擬環境?

這也是我在開始學習Python時的一個困惑,可能能因爲我當時知識碎片化的學習,一直都是用的非虛擬環境,當看到很多地方只是告訴我們要通過虛擬環境來開發Python,卻沒有告訴我們爲什麼要這樣做,我的心裏就一直有這個困惑,直到我開發了兩個以上的項目,我才意識到,其實這一切都基於版本控制(所謂的“環境”),那麼版本控制究竟有多重要呢?

我最開始理解的,我們引用的第三方庫就像是我們手機裏的各類APP,我們的Python就像是手機系統。那麼Python有新版本了,從3.6升級到了3.7,又升級到3.8、3.9,那麼我們在運行新項目的時候,我們只需要將Python升級到最新版本,就像我們的iPhone手機從iOS 6 一年一年地升級到 iOS 14那麼自然!~

然而,現實情況是,版本的升級,意味着內部實現原理的改變,而這意味兼容性的問題。最直觀的例子就是,假設原先的一個方法,它的語法完全變了,而這時候如果你集成了多個第三方庫,而每個第三方庫只支持特定版本及以上的Python特性,兼容性的複雜程度將成幾何形成長。這還只是一個項目,當多個項目引用的雖然是同一個第三方庫,可是它們依賴的是不同的版本,怎麼辦?虛擬環境就是創建了一個專屬空間,當前項目的所有依賴,都從這個專屬空間裏引用,即 專屬的第三方庫,專屬的指定版本

專屬空間,纔是虛擬環境的意義所在。

每個深刻理解版本控制的重要性的開發者,一定是之前踩過不少這樣的坑,所以我們哪怕用高中時學過的【控制變量法】也能聯想到,版本控制的精髓,就是控制版本最好不要變化,如果一定要升級,請同時測量所有其他的變量(引用到的第三方庫)是否支持,不會出現預期以外的程序BUG!

對於服務器的項目尤其重要,因爲它是一個服務於大量設備的載體,每天要承接大量的服務,並且有時它還需要快速移植到其它設備上,虛擬環境其實是提供了一個方便移植的版本集羣的抓手,讓你能夠快速處理那些本來深度耦合在項目內部的第三方庫。

因此,我推薦使用pipenv來作爲第三方庫及版本控制工具。它自動生成的版本配置文件,可以幫我們省去很多事兒。這個東西后面搭建時會用到,但在此我只會講簡單提到,有時間我會專門開一篇文章講它的用法,並把鏈接貼到此處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章