Python/虛擬環境 - Arch Linux 中文维基

跳至內容

# Python/虛擬環境

出自 Arch Linux 中文维基
< Python
翻譯狀態：

- 本文（或部分內容）譯自 Python/Virtual environment，最近一次同步於 2026-07-01，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

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

## 概述

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

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

## 安裝

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

### 軟體包

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

- Python 3.3+：python包
- Python 3：python-virtualenv包

Pipenv：

- Python 3：python-pipenv包

## 使用方法

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

### 創建虛擬環境

在項目目錄中使用 venv 或 virtualenv 創建一個虛擬環境。 請確保將虛擬環境目錄從版本控制系統中排除——一份 `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-virtualenvwrapperAUR 軟體包，並在 `~/.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]。

## 另請參見

- Python venv
- PyPI 頁面上的 virtualenv
- virtualenvwrapper 文檔

分類：​

- 開發

Python/虛擬環境
新增話題