Python 中的 virtualenv

开发 Python 应用程序的时候,需要安装(import)各种各样的第三方包。默认情况下,都会被安装到Python 3的 site-packages 目录下面。比如,我的第三方包统一安装在目录C:\Program Files\Python36\Lib\site-packages下面。

但是,当我们开发多个项目的时候,如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?

virtualenv 就是用来为特定的应用程序创造一套独立的运行环境的。

如何你用的是Python 3,还可以直接创建虚拟环境(见第二部分)

一. 使用 virtualenv

1. 安装

1
pip3 install virtualenv

2. 创建一个工程目录

1
2
mkdir webApp
cd webApp

3. 创建独立Python运行环境

1
virtualenv venv

4. 进入该环境

Linux / Mac

1
source venv/bin/activate

Windows

1
.\venv\Scripts\activate

此时命令行前面出现了 (venv) 表示已经进入独立的虚拟Python运行环境

1
(venv) D:\Python\new\venv>

此时可以用 pip 安装该项目所需的 Python 包

1
(venv) D:\Python\new\venv> pip install jinja2

5. 退出venv环境

1
2
3
(venv) D:\Python\new\venv> deactivate

D:\Python\new>

6. 删除venv环境

删除目录即可


二. 使用 Python 3 自带的venv

virtualenv 可用在 python 2 或 python 3, 但如果是 python 3 项目, 其实还可以使用 python 3 自带的 venv

1. 创建虚拟环境

1
python -m venv myvenv

默认是干净的环境,如果虚拟环境中需要使用系统的环境,可用

1
python -m venv --system-site-packages myvenv

使虚拟环境指向系统环境包目录(非复制),在系统环境pip新安装包,在虚拟环境就可以使用。

2. 激活虚拟环境

不同的命令行工具有不同的激活方法:

bash/zsh

1
source <venv>/bin/activate

fish

1
<venv>/bin/activate.fish

csh/tcsh

1
<venv>/bin/activate.csh

cmd

1
<venv>\Scripts\activate.bat

PowerShell

1
<venv>\Scripts\Activate.ps1

这里的 <venv> 指的是刚刚执行创建虚拟环境的目录

3. 关闭虚拟环境

1
deactivate

4. 删除虚拟环境

直接删除目录即可


下载 requirements

有时候,一个项目里所需的依赖会导出到 requirements.txt,使用以下命令来安装所有依赖

1
pip install -r requirements.txt

更换 pip 源

使用 -i 参数临时使用

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [some-package]

升级 pip 到最新的版本 (>=10.0.0) 后进行配置,永久使用

1
2
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple