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

From ArchWiki
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

使用

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

创建虚拟环境

使用venvvirtualenv 在项目目录创建虚拟环境,请将 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[损坏的链接:package not found] 提供的 virtualenv2

$ virtualenv2 venv

激活

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

$ source venv/bin/activate
(venv) $

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

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

(venv) $ deactivate

Python 版本

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

venvvirtualenv 差别在于 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[损坏的链接:package not found].

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[失效链接 2021-11-15 ⓘ].

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