python中的venv 模塊 -- 創建虛擬化的項目環境

前言

在使用 python 製作網頁的過程中,我們往往需要先將站點的目錄“虛擬化”。虛擬化其實就是將當前文件下程序的運行環境與整個系統的環境隔離。那麼爲什麼我們要將一個項目虛擬化呢?

1.不進行虛擬化會產生的問題

在平時使用 python 時,有可能會遇到這幾個常見的問題:

1.當運行的項目處於不同版本時(如 python 2.7/3.7 ),要通過切換 python 解釋器的版本來運行程序(或要使用 python2/3 pip/pip3 等指令來對應不同的版本)。

2.有時做一個項目要用到許多第三方模塊,但是其他項目基本不會用。如果直接 pip install 到系統中,項目刪除後清除安裝過的模塊會很麻煩。

3.做完一個項目後,你希望能夠不再一次安裝它依賴的模塊,就能在另外一個系統上直接運行。

4.你的項目暫時運行在一箇舊版的第三方模塊上,而新版的第三方模塊不兼容你所寫的程序。你既希望能夠讓原來的項目在舊版本上繼續正常運行,又希望能夠在另一個項目中使用新版本。

如果你遇到過上面這四個問題,並且希望能夠改善這一些繁瑣的配置過程,那麼你就可以嘗試對你的項目進行“虛擬化”。

**
學習從來不是一個人的事情,要有個相互監督的夥伴,工作需要學習python或者有興趣學習python的夥伴可以私信回覆小編“學習”或者評論,留言,點贊 領取全套免費python學習資料、視頻()裝包**

2.創建一個虛擬化項目

python 自帶了一個非常簡便的虛擬化模塊 - venv 。在 python 3.5 及之前的版本,創建一個虛擬化項目的指令爲:

$ python -m venv <directory>

而在 3.6 之後的版本中,指令變成了

$ python3 -m venv <directory>

其中在 3.4 及之前的版本中,初始化一個環境是不會自帶 pip 的。而在 3.4 之後,可以添加 --without-pip 這個參數來去掉 pip 包。

當然,venv還有 --copies 參數,它就可以在創建時把系統已有的模塊複製進去。不過一般這個不常用。(因爲系統裏裝的模塊可能已經很多了)如果真的要使用系統中的模塊,請參考第四小節的設置。

3.進入/退出虛擬化環境
成功創建了虛擬化的環境之後,我們需要先進入這個環境(不然 pip 還是會裝在系統中)。我們可以使用以下指令來進入環境。其中 是你項目文件夾的路徑。

MacOS 或 Linux

bash/zsh    $ source <venv>/bin/activate

fish    $ . <venv>/bin/activate.fish

csh/tcsh    $ source <venv>/bin/activate.csh

Windows

cmd.exe C:\> <venv>\Scripts\activate.bat

PowerShell  PS C:\> <venv>\Scripts\Activate.ps1

cometeme$ source /Users/cometeme/Documents/example/bin/activate
(example)cometeme$```

可以看到前面多了一個(example)的提示,說明我們已經進入到虛擬環境中了。在虛擬環境裏,我們可以像正常一樣操作裏面的文件,或是安裝第三方模塊,只不過這一些都只會影響到本地的內容了。

當我們想要退出虛擬環境時,我們可以輸入 deactivate 這個指令來退出。
**
4.設置虛擬環境**

在虛擬環境的根目錄下,我們可以看到一個叫 pyvenv.cfg 的文件。用文本編輯器打開後可以看到這幾行內容:

home = /Library/Frameworks/Python.framework/Versions/3.7/bin
include-system-site-packages = false
version = 3.7.0

其中, home 指的是系統中 python 模塊的安裝位置。除非你自定義過了,不然這個默認值就是對的。

include-system-site-packages 這個參數可以設置是否開啓“引用系統中的模塊”的功能。如果開啓了,那麼當你就可以直接使用系統中已經裝過的第三方模塊。(但是你在虛擬環境下裝的模塊就不能被其他地方的程序使用)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章