python
因为丰富的扩展库被大家所青睐,但是当开发环境中的第三方包越来越多的时候,基于该开发环境开发的应用越来越难以移植、迁移。像在操作系统中我们可以用容器(例如docker
)将开发环境和生产环境分开,在做 python 的应用开发的时候,我们同样需要给每个应用提供一个隔离的运行环境,从而避免增加不必要的版本冲突和排查成本。
virtualenv 就是干这行的。
安装#
安装其实非常简单。
首先你必须安装好pip
(装 python 的时候没有人不装吧?)
然后输入命令
pip3 install virtualenv
等待安装完成就大功告成了!
注:Python3 已经内置了 venv 模块,实际上不需要手动安装即可。查看是否安装
python3 -m venv --help
基本操作#
创建虚拟环境#
只要在自己希望创建虚拟环境的位置,输入
virtualenv test
等待一段时间,即可创建一个名称为 “test" 的虚拟环境,以后,在这个虚拟环境下下载第三方的包都会被放在这个文件夹下面。
下图表示创建成功:
然后你的虚拟环境的所有配置都存放在 test 文件夹中,
默认的目录结构如下(Windows 10 环境下)
- test
- Inculde
- Lib
- Script
- tcl
- LICENCE.txt
旧版命令创建的虚拟环境会默认继承实际环境存在的第三方包,如果需要创建一个干净的虚拟环境
输入:
virtualenv --no-site-packages test
新版默认创建无第三方包的纯净环境
进入虚拟环境#
windows
系统进入Script
文件夹,执行activate.bat
文件
linux
执行:
source test/bin/activate
test 是你创建的虚拟环境所在的文件夹
当命令行前面出现虚拟环境名说明已经切换到虚拟环境中,之后你安装的第三方依赖包都会下载到这个虚拟环境中,从而不影响本机实际的 python 运行环境。实际上也是将这些依赖下载到这个虚拟环境所在的文件夹中
退出虚拟环境#
windows
输入
linux
系统执行
source test/bin/deactive
交接环境#
这个做法比较常见,出现在你需要将自己的开发环境转移到另外一台电脑或移交给某人的时候,需要将自己的虚拟环境拷贝到另外的地方
做法是
- 先冻结环境包,将包的版本信息保存在一个文本文件中
$ pip freeze > requirements.txt
- 在另外一个环境中直接下载所有依赖
$ pip install -r requirements.txt
其他命令#
用法:
$ virtualenv [OPTIONS] DEST_DIR
选项:
–version
#显示当前版本号。
-h, –help
#显示帮助信息。
-v, –verbose
#显示详细信息。
-q, –quiet
#不显示详细信息。
-p PYTHON_EXE, –python=PYTHON_EXE
#指定所用的python解析器的版本,比如 –python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器
–clear
#清空非root用户的安装,并重头开始创建隔离环境。
–no-site-packages
#令隔离环境不能访问系统全局的site-packages目录。
–system-site-packages
#令隔离环境可以访问系统全局的site-packages目录。
–unzip-setuptools
#安装时解压Setuptools或Distribute
–relocatable
#重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。
–distribute
#使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。
–extra-search-dir=SEARCH_DIRS
#用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。
–never-download
#禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。
–prompt==PROMPT
#定义隔离环境的命令行前缀。
组成#
再看一下 virtual 环境的目录(Windows 10 环境下)
- [虚拟环境名]
- Inculde
- Lib
- Script
- tcl
- LICENCE.txt
- Include :
- Lib:库文件
- Script: 脚本文件
- tcl
首先介绍一下 python 的运行环境。
在 VScode 中愉快玩耍#
如何在
VScode
中部署virtual
环境
第一种方法#
在项目的\.vscode\launch.json
文件里加了一句:
"pythonPath": "D:\\myproject\\venv\\Scripts\\python.exe",
第二种方法#
本人亲测有效
要在VScode
中使用Python
的virtualenv
虚拟环境,首先在设置同添加虚拟环境所在目录和虚拟环境的识别规则:
{
...
"python.venvPath": "E:\\envs",
"python.venvFolders": [
"envs",
".pyenv",
".direnv',
".env"
]
}
之后当你想要切换虚拟环境的时候只需要通过命令面板Python: Select Interpreter
就会列出所有的虚拟环境.
它其实是在你的项目根目录下新建了一个
./.vscode/settings.json
配置文件,将解释器路径选项写在里面了,该文件称为工作区设置,可以针对每个项目单独设置配置项。
第三种方法#
在命令行激活虚拟环境后,直接用 code
打开项目文件夹就行了。。。
XXX>venv\scripts\activate
(venv) XXX>code project_name/