Python虚拟环境Venv

当你的项目比较复杂,对模块版本要求不一时,不需要安装多个 Python,只需要配置虚拟环境即可。提起虚拟环境,很多人都会想到 Virtualenv,实际上从 Python3.3 版本开始内置了 Venv模块 用以建立轻量级的虚拟环境。

Venv 的用法和机制和 Virtualenv 非常相似,当你的项目只需要 Python3.4 或以上版本时,Venv 完全可以替代 Virtualenv 。我这里的演示环境为 Win10,使用的终端为 PowerShell ,其他环境在某些步骤上会有些细微差别,如果你的环境和我不一致,请对照官方文档。使用方法也很简单:

需要注意的是, Python3.3 版本 venv 生成的环境并不带 pip ,需要自行安装。在之后的版本 Python3.4中修复了这一缺陷,可以完全的替代 Virtualenv。

python -m venv env

这条命令会在几秒内执行完毕,在当前目录下生成了个文件夹 env ,其中包含着我们生成虚拟环境文件,文件夹内包含了下列文件或文件夹:

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2017-10-26 22:08 Include
d----- 2017-10-26 22:09 Lib
d----- 2017-10-26 22:09 Scripts
-a---- 2017-10-26 22:08 98 pyvenv.cfg

在 Scripts 生成了一系列的镜像版二进制的 Python 文件(仅Windows下如此),以至于你可以使用下列命令来安装模块,运行 Python 程序,无需激活环境,而 Window 系统默认禁止 PowerShell 运行 ps1 脚本,所以也可以直接使用“镜像版 Python”。在 PowerShell 下运行下列命令安装模块,运行 Python 程序,首先需要确定你已经在创建虚拟环境的目录下。

.env\Scripts\pip.exe install package_name
.env\Scripts\python.exe test.py

我们可以尝试激活当前的虚拟环境,也可以退出当前虚拟环境:

.\Scripts\Activate.ps1 # 激活虚拟环境
.\Scripts\activate # 另一种方式激活虚拟环境
deactivate # 退出虚拟环境

啊哦~下面出现了报错,原来 WIN10 为了安全,默认安全策略为 RESTRICTED ,此安全策略下允许单独的命令,但不允许运行脚本,并且会阻止所有脚本文件的运行。这里我们把安全策略调整为 REMOTESIGNED ,使得我们可以运行本地编写的脚本,而来自互联网下载的脚本则要求拥有受信任的发布者的数字签名,关于安全策略的更多信息,可以查看 微软官方文档

调整安全策略需要我们打开一个具有管理员权限的 PowerShell ,执行下列命令:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

这样我们就为当前用户设置了 REMOTESIGNED 安全策略,再次激活一下虚拟环境试试,是不是成功了~

当激活虚拟环境时,可以直接使用 pip 命令安装第三方模块,自动安装到当前虚拟环境中,并且由于每个虚拟环境都有自己的 Python 二进制文件(这允许创建不同Python版本的虚拟环境),你也可以直接执行之前生成的二进制文件。值得注意的是,在虚拟环境下可以直接使用 Python、pip 即使你原先命令为 python3、pip3。

接着你可能会遇到一个问题,怎么在虚拟环境使用 IDE ,毕竟在学习或者调试过程中,IDE还是一个比较方便的工具。这个问题也非常容易解决,在Python自带的IDE工具 idle 只是一个模块,我们可以在命令行中运行这个模块。首先先依照上列进入虚拟环境,然后运行下列命令:

python -m idlelib

是不是看到了熟悉的界面,一切就是那么简单~


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注