本篇是 Python 系列教程第 4 篇,更多內容敬請訪問我的 Python 合集
1 什麼是虛擬環境
Python的虛擬環境一般存在於專案的根目錄,其作用其實和Vue專案的node_modules資料夾差不多,存放一些本專案的依賴包。與node_modules不同的是node_modules只是用來存放外部依賴包,而Python虛擬環境還存放了可執行檔案和Python直譯器(即python.exe)。
在瞭解虛擬環境之前,我們先來了解一下真實環境,Python真實環境包含以下內容
-
Lib:一些包
- site-packages:安裝的外部包
- 標準庫:Python預裝的模組和包
-
Script:可執行檔案,如pip.exe
-
python.exe:python直譯器
虛擬環境可以理解為把真實環境複製了一份,供專案單獨使用。但是複製會有一個問題,就是標準庫是非常大的,把標準庫複製到虛擬環境裡是很不划算的。
所以虛擬環境和真實環境的第一個區別點就是不包含但引用標準庫。第二個區別點是虛擬環境把python.exe也放到了Scripts目錄下。
專案的虛擬環境目錄結構如圖:
如下圖,這個是我專案的虛擬環境
2 如何建立和啟用
2.1 開發工具建立
PyCharm在建立專案的時候會自動建立虛擬環境,如下圖
在建立的專案裡開啟控制檯可以發現路徑前面多了一個虛擬環境目錄名,如下圖
這樣就代表虛擬環境已經被自動啟用了。這時使用pip安裝外部包就會安裝到本虛擬環境的site-packages目錄下而不是Python安裝目錄下。
2.2 命令列建立
我們新建一個資料夾demo2然後用PyCharm開啟,這時是沒有虛擬環境的,我們來建立一個虛擬環境,注意不要和demo1的虛擬環境重名,不然會導致意想不到的bug。
建立虛擬環境的命令(這裡使用的是venv工具),最後一個單詞是虛擬環境名稱
python -m venv .venv
建立好後的結構如下圖
每次開啟一個新控制檯都需手動執行activate進行啟用(PyCharm自動建立的虛擬環境就不需要手動啟用),啟用成功後可以看到路徑前有虛擬環境標識了。如下圖
接下來在此控制檯輸入的所有命令都是在虛擬環境進行的了。
如果不想每次開啟控制檯都手動啟用,可以在setting裡改配置,如下圖
2.3 虛擬環境都做了些什麼
其實虛擬環境並沒有做什麼高大上的操作,它只是把我們的環境變數改了一下。我們可以在虛擬環境中和普通的控制檯分別把環境變數列印出來看看
可以看到虛擬環境在環境變數前多加了一串虛擬環境的可執行檔案的路徑D:\PycharmProjects\demo2\.venv\Scripts;
,這也就解釋了為啥虛擬環境在複製的時候把python.exe放到Scripts目錄下了,因為方便環境變數配置。
由於環境變數是順序優先,所以虛擬環境就成功生效了。
1和2 小結:
所以,簡單來說,虛擬環境就是把python.exe、pip.exe等可執行檔案複製了一份自己使用,並且在啟用的時候更改本控制檯的環境變數讓pip install的包都安裝到虛擬環境自己的site-packages目錄下。
3 如何複製虛擬環境
當我們開發好一個程式,想讓別人也使用,最好讓第二個人得到一個跟我一模一樣的虛擬環境。該怎麼整呢?
其實複製虛擬環境用到了pip的命令
pip freeze > requirements.txt
這樣另一個人就可以用這個requirements.txt安裝相同的依賴包了,注意要事先建立虛擬環境並啟用
pip install -r .\requirements.txt
如下圖,我先把demo2的.venv檔案給刪了,然後執行命令上述命令安裝demo1的依賴包