1. 引入
python及其各种类库,版本众多,不同项目中版本使用又各有区别,配置起来实在是麻烦多多。使用虚拟环境,可以一定程度上避免一些麻烦。
能用来配置python的虚拟环境的工具,比较知名的,主要是virtualenv和conda。但这都不能跟项目走,比如每个项目建立一个虚拟环境,并且把项目从开发机A移动到开发机B,也不能很方便的把虚拟环境跟着项目一起移动到B。
所以,PEP 405(Python Enhancement Proposals)提出了venv,目的是:
- 自带:让python自身就支持虚拟环境,不需要安装第三方库
- 隔离:把python binary复制到一个独立的文件夹,与系统目录隔离开
- 轻量级:如果将python的整个标准库也做到独享,隔离性会更好,但这样就不够轻量级,也没法做到跨平台。所以venv不复制整个python的标注库
下面介绍venv的原理与用法(以笔者的windows电脑为例说明)。
2. 用法
-
cd到python项目的文件夹 -
运行如下命令,创建项目级的轻量虚拟环境
python -m venv venv
(1)命令的第一个venv,是制定运行venv。第二个venv是指虚拟环境的文件夹的名字,这个可以根据需要来修改 (2)命令执行后,会在当前文件夹中,建立一个venv目录。 在这个venv目录中,会默认放置python.exe、pip.exe等与系统目录隔离的可执行文件
- 激活虚拟环境
在windows系统上,激活这个虚拟环境的命令是:
E:\test_venv\ml_project>venv\Scripts\activate
激活后,就能用python命令来了运行程序,也能用pip来安装第三方库,这些库的安装都是隔离在虚拟环境中的。
- 退出虚拟环境
在windows系统上,退出这个虚拟环境的命令是:
venv\Scripts\deactivate.bat
- 在linux上的用法和windows类似,只是linux下激活venv的命令如下
$ source <venv>/bin/activate
3. 总结
- venv是python(3.3以上版本)自带的轻量级虚拟环境
- 笔者用3.6做实验,创建出来的venv文件夹,总共只有29M,压缩后10M
参考:
- PEP405, https://www.python.org/dev/peps/pep-0405/
- venv细节用法/命令介绍,https://docs.python.org/3/library/venv.html
|