# Python (简体中文)/Virtual environment (简体中文)

From ArchWiki
< Python (简体中文)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态：本文是 Python/Virtualenv 的翻译。上次翻译日期：2017-10-19。如果英文版本有所更改，则您可以帮助同步翻译。

virtualenv 是为 Python 程序建立独立环境的工具，可以安装本地软件包，建立工作环境并在其中执行 Python。

## 概览

虚拟环境是一个包含二进制程序和 shell 脚本的目录。二进制程序包含执行脚本的 python 和安装其它模块的 pip。脚本包括激活环境的脚本，bash, csh 和fish 个有一个。这个虚拟环境模拟了一个完整的 Python 执行环境和需要的模块，将程序运行的环境与系统其它部分隔离开来。

## 安装

Python 从 3.3 开始包含了 venv 程序，无需单独安装。 如果使用的是老版本的 Python, 需要额外安装 virtualenv。

- Python 3.3+: python
- Python 3: python-virtualenv
- Python 2: python2-virtualenv

## 使用

不同工具的使用方式基本相同。

### 创建虚拟环境

使用venv 或 virtualenv 在项目目录创建虚拟环境，请将 venv 目录加入版本控制系统，这样只要执行 `pip freeze` 就可以重建虚拟环境。

#### venv

注意： 此方法代替了从 python 3.6 就不建议使用的 pyvenv。

python 软件包从 3.3 开始就提供了此工具:

    $ python -m venv venv

#### virtualenv

Python 3 使用 python-virtualenv 提供的 virtualenv。

    $ virtualenv venv

Python 2 使用 python2-virtualenv 提供的 virtualenv2。

    $ virtualenv2 venv

### 激活

要激活虚拟环境(这里假设使用的是 bash):

    $ source venv/bin/activate
    (venv) $

一旦进入虚拟环境，就可以通过 pip 安装软件包，并正常执行脚本。

要退出寻环境，执行 `bin/activate` 下的:

    (venv) $ deactivate

## Python 版本

二进制的版本由使用的虚拟环境工具决定。使用 Python 2 工具创建的虚拟环境中，python 命令指向 `bin/python2.7`，venv 创建的环境中， python 指向 `bin/python3.6`.

venv 和 virtualenv 差别在于 venv 默认使用系统的 Python 程序:

    $ ls -l venv/bin/python3.6
    lrwxrwxrwx 1 foo foo 7 Jun  3 19:57 venv/bin/python3.6 -> /usr/bin/python3

而 virtualenv 工具使用环境目录中的 Python 程序:

    $ ls -l virtualenv/bin/python3.6
    lrwxrwxrwx 1 foo foo 7 Jun  3 19:58 virtualenv/bin/python3.6 -> python3

## virtualenvwrapper

virtualenvwrapper allows more natural command line interaction with your virtual environemnts by exposing several useful commands to create, activate and remove virtual environments. This package is a wrapper for both python-virtualenv and python2-virtualenv.

### Installation

Install the python-virtualenvwrapper package from the official repositories.

Now add the following lines to your `~/.bashrc`:

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

Since python3 is a system-wide default in Arch, in order to be able to create python2 environments, you need to set `VIRTUALENVWRAPPER_PYTHON` and `VIRTUALENVWRAPPER_VIRTUALENV` prior to sourcing `virtualenvwrapper.sh` in your `~/.bashrc`:

    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
    export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv2

The line `source /usr/bin/virtualenvwrapper.sh` can cause some slowdown when starting a new shell. To fix this try using `source /usr/bin/virtualenvwrapper_lazy.sh`, which will load virtualenvwrapper the first time a virtualenvwrapper function is called.

If you are not using python3 by default (check the output of `python --version`) you need to add the following line to your `~/.bashrc` prior sourcing the `virtualenvwrapper.sh` script.

    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

Re-open your console and create the `WORKON_HOME` folder:

    $ mkdir $WORKON_HOME

注意： This seems to happen now automatically after re-open the console for the first time.

### Basic usage

The main information source on virtualenvwrapper usage (and extension capability) is Doug Hellmann's page.

Create the virtual environment:

    $ mkvirtualenv -p /usr/bin/python2.7 my_env

Activate the virtual environment:

    $ workon my_env

Install some package inside the virtual environment (say, Django):

    (my_env) $ pip install django

After you have done your things, leave the virtual environment:

    (my_env) $ deactivate

## See also

- Python venv
- virtualenv Pypi page
- Tutorial for virtualenv
- virtualenvwrapper page at Doug Hellmann's

Category:

- Development (简体中文)