跳至內容

Python/虛擬環境

出自 Arch Linux 中文维基

虛擬環境工具可為 Python 應用程式創建一個隔離的工作空間。 虛擬環境的優勢在於,可在本地安裝模塊、導出工作環境,並在其中執行 Python 程序。

概述

虛擬環境是安裝了一些二進制文件和 shell 腳本的目錄。 二進制文件通常是用於執行腳本的 python 和用於安裝模塊的 pip。 虛擬環境中也包含了用於激活環境的 shell 腳本(bash、csh 和 fish 均可用)。 虛擬環境本質上是模擬了一個安裝了 Python 和所有所需的模塊的完整系統,同時不會影響到任何運行此應用程式的系統。

Pipenv 於 2017 年發布,提供了上述所有工具的管理功能——管理 python 解釋器所在的虛擬環境、包/模塊和依賴關係及其激活和 Pipfiles 中可重現的版本鎖定。


安裝

Python 3.3+ 版本提供了一個叫做 venv 的模塊。 對於使用早於此版本的 Python 的應用程式,必須使用 virtualenv

軟體包

從下面的軟體包中選一個進行安裝即可開始使用 Python 虛擬環境:

Pipenv:

使用方法

上述三種工具的工作流程基本相似。

創建虛擬環境

在項目目錄中使用 venvvirtualenv 創建一個虛擬環境。 請確保將虛擬環境目錄從版本控制系統中排除——一份 pip freeze 的拷貝即可重建這個環境。

提示:下面的示例中,envname 是虛擬環境名稱也是目錄名稱。

venv

注意:這種方式將替換 pyvenv 腳本(此腳本已在 python 3.8 版本中被移除)。

此工具由 python(3.3+)提供:

$ python -m venv envname

virtualenv

python-virtualenv 提供了可用於 Python 3 的 virtualenv

$ virtualenv envname

激活虛擬環境

使用目錄中提供的 shell 腳本以激活或停用虛擬環境:

$ source envname/bin/activate

虛擬環境激活後,命令行解釋器的提示符前會顯示類似下面的虛擬環境名稱:

(envname) $

在虛擬環境中可正常使用 pip 安裝模塊和運行腳本。

運行如下的命令即可退出虛擬環境(此命令由 bin/activate 提供):

(envname) $ deactivate

Python 版本

默認情況下,虛擬環境由系統上安裝的 Python 創建。 其中的 bin/python 是一個連結到系統上所安裝的 python 的符號連結。 用 ls 查看可得到類似如下的輸出結果:

$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 15 Jan 29 18:48 envname/bin/python -> /usr/bin/python

對於 virtualenv,可以使用 -p--python 選項在虛擬環境中使用其他版本的 Python:

$ virtualenv -p 3.8 envname
$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 18 Jan 29 18:48 envname/bin/python -> /usr/bin/python3.8

也可以使用 pypy3

$ virtualenv -p pypy3 envname

virtualenvwrapper

virtualenvwrapper 提供了更自然的命令行交互(一些用於創建、激活以及刪除虛擬環境的命令)以管理虛擬環境。 該軟體包是對 python-virtualenv 的包裝。

安裝

安裝 python-virtualenvwrapper 軟體包,並在 ~/.bashrc 中添加下面的配置:

~/.bashrc
export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh

source /usr/bin/virtualenvwrapper.sh 會影響 shell 的啟動速度。 使用 source /usr/bin/virtualenvwrapper_lazy.sh 可解決此問題,在這種情況下,只有當 virtualenvwrapper 被首次調用時才會加載。

重新打開 shell 以應用更改。 WORKON_HOME 目錄會自動創建。

基本用法

使用方法和擴展功能請參見 virtualenvwrapper 文檔

創建虛擬環境(除了 -a-i-r-h,其餘的命令行參數都會被直接傳遞給 virtualenv,這裡同樣可以使用 -p 來指定 Python 版本):

$ mkvirtualenv envname

激活虛擬環境:

$ workon envname

在虛擬環境中安裝包(模塊),以 Django 為例:

(envname) $ pip install django

停用虛擬環境:

(envname) $ deactivate

Pipenv

pipenv 提供單個、囊括了上述工具的所有功能的程序,實現了更好的命令行交互管理。

安裝

安裝 python-pipenv 軟體包。

基本用法

所有命令都可在項目目錄中執行,pipenv 還會檢測並定位 virtualenv,使用特定的虛擬解釋器執行等。

更多信息請參見:[1][2][3]

另請參見