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/虚拟环境
添加话题