首頁 > 軟體

Python學習之虛擬環境原理詳解

2022-03-29 13:03:58

該章節我們學習虛擬環境的相關知識,虛擬環境對於剛剛使用Python的初學者來說使用的概率可能會比較低。但是我們依然要對它有一定的瞭解。

認識虛擬環境

在我們平時的工作環境中,可能會存在一臺電腦存在多個版本的 python 的情況 。 比如我們有一個 Python2.7的版本,還有一個 Python3.8的環境,它們兩個都存在與我們當前的系統中。這就造成了一個問題,兩個版本都在同一個環境下,造成 pip 與第三方包衝突的問題。

為了解決這個問題,我們專門建立一個 Python2.7的虛擬環境 與 Python3.8的虛擬環境環境。Python2.7的環境只有Python 2.7的pip和直譯器,而 Python3.8 也可以建立屬於自己的環境。

這兩個環境獨立存在,且互不衝突、互不影響,這就是虛擬環境的作用與目的。我們只需要在各自的虛擬環境中,安裝各自需要的軟體版本。這些軟體與指定的版本也只需要針對當前的虛擬環境,不會影響到其他的虛擬環境。

Python中的虛擬環境工具

python中都有哪些建立虛擬環境的軟體:

Virtualenv:一款非常常用的虛擬環境工具。

1、依賴於當前系統中擁有的 Python 版本。

2、使用簡便,所以受到大部分的Python愛好者的追捧。

pyenv:與 Virtualenv 同樣是建立虛擬環境的工具。

1、不依賴於當前系統的 Python 版本,只要是 Python 擁有的版本,pyenv 都可以在當前電腦建立虛擬環境(先將需要的版本安裝在本地,再進行虛擬化操作。)

2、缺點:操作過於複雜,並且也是依賴於 Virtualenv 。我們可以理解為 pyenv 最終還是依賴於 Virtualenv 進行虛擬環境的建立。

由於 pyenv 操作的相對複雜性,所以該章節我們主要介紹的是 Virtualenv 的使用方法,在日後對 python 使用的更加嫻熟之後再去關注 pyenv 會更加輕鬆。

Virtualenv

Virtualenv 也是 Python 的第三方包,與ipython一樣也是在命令列終端使用的。

1、通過 pip install virtualenv 進行下載安裝。

2、當安裝完成之後,我們希望把虛擬環境建立在那個目錄下,就需要提前進入到對應的目錄資料夾,這也是選擇建立 虛擬環境的目錄。

3、當進入到選擇的資料夾之後,執行 virtualenv -p python3 penv (-p 是選擇 python的版本,如果想指定版本號,可以使用 -p python3.6;penv 為指定的虛擬環境的名字)。

4、當在選擇的資料夾執行過 virtualenv -p python3 penv 命令後,會在當前目錄建立一個 penv 資料夾,就是執行的虛擬環境目錄。

5、接下來呼叫 ./penv/bin/active 來啟動虛擬環境;如果是windows環境可以直接 進入到 /penv/bin 目錄下,直接執行 active 啟動虛擬環境。

6、如果想要退出虛擬環境,直接執行 deactivate 即可退出當前的虛擬環境。

需要注意的是:我們執行的虛擬環境,只在我們當前的 Terminal 終端有效。如果我們開啟了多個 Terminal 終端,而且需要每一個都在 虛擬環境中,則需要在每一個 Terminal 終端都執行以上的操作才可以。

Treminal 終端演示

下載安裝:pip install virtualenv

安裝完成後,我們通過 virtualenv -p python3.10 python3.10_env 命令建立一個名為 python3.10_env 的虛擬環境,同時會在當前路徑下發現 對應的 虛擬環境 的資料夾已建立完成,見下圖:

接下來我們進入到建立的 python3.10_env 路徑下,執行 ./python3.10_env/bin/activate 命令 進入到我們的虛擬環境。這裡我遇到了兩個問題。

第一個問題:沒有可執行許可權,報錯 zsh: permission denied: ./python3.10_env/bin/activate ,這是因為 使用者沒有許可權,所以才出現了這個錯誤,所以只需要用chmod修改一下許可權就可以了。

第二個問題:在執行 ./python3.10_env/bin/activate 的時候,提示 You must source this script: $ source ./python3.10_env/bin/activate ; 意思是 我必須使用 source ./python3.10_env/bin/activate 這個命令才能執行 python3.10_env 的虛擬環境(因為我用的是Mac的原因,才會出現這個情況,不曉得 WIN電腦會不會有這個情況。)

執行 source ./python3.10_env/bin/activate 嘗試執行我們已經安裝好的 ipython ,發現無法執行,這是因為我們是虛擬環境。雖然物理環境安裝了 ipython ,但是因為我們的虛擬環境是與物理環境完全隔離的,所以 python3.10_env 是一個很乾淨的環境,並沒有 ipython。

再檢視一下當前虛擬環境的 python 直譯器 ,如下圖:

如果需要退出虛擬環境 , 執行 deactivate 。需要注意的是,當退出虛擬環境之後,當前終端所處的環境並不是我們進入 虛擬環境前的環境,而是本地環境,所以如果想要保持之前進入的環境狀態,只需要關閉 Terminal 終端,重新進入即可。

在平時的工作中,一臺電腦中可能要開發多個專案,但是多個專案可能使用相同的包,但是確實不同的版本。所以如果我們在一個公共的大環境下,就沒辦法保證一個包的多個版本安裝進去,所以我們就可以通過虛擬環境根據每個不同的專案使用不同的包的不同的版本,這樣既不互相沖突,又保證了單獨專案的獨立性與完整性。

到此這篇關於Python學習之虛擬環境原理詳解的文章就介紹到這了,更多相關Python虛擬環境內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com