Python (简体中文)/Virtual environment (简体中文)
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[损坏的链接:package not found]
使用
不同工具的使用方式基本相同。
创建虚拟环境
使用venv 或 virtualenv 在项目目录创建虚拟环境,请将 venv 目录加入版本控制系统,这样只要执行 pip freeze
就可以重建虚拟环境。
venv
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.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[损坏的链接: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
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