/ Python

使用 VirtualEnv 配置 Python 虚拟环境

在同一台机器上开发多个 Python 项目,经常会碰到某个包的版本不一致的问题。VirtualEnv 可以为每个的项目提供独立的配置,避免冲突,绝对是居家旅行必备工具。

VirtualEnv 的安装很简单,pip install VirtualEnv 一行命令即可(前提是已经安装了 pip 包管理工具)。

安装完成后,对需要使用 VirtualEnv 的项目需要手动进行‘初始化’。切换到工程目录,运行

$ virtualenv venv
$ ./venv/scripts/activate

上面使用了两个命令。首先通过 virtualvnv 命令创建一个名为 venv 的虚拟环境,这个命令的结果是在工程目录中创建了一个名为 venv 的子目录。再运行刚刚生成的目录里的 activate 脚本。这时,shell 的 prompt 会变成以 venv 开头:

执行 activate 脚本为当前的项目激活 VirtualEnv

VirtualEnv 成功激活之后,运行 pip 所安装的 Python 包都是只针对当前项目,并不影响全局的 Python 设置。

下次再对这个项目进行操作时,只要再次执行 scripts 目录下的 activate 脚本即可。

附:Windows PowerShell 脚本安全策略

Windows PowerShell 默认的脚本签名策略会阻止上文提到的 activate 脚本的执行。

PowerShell 的 ExecutionPolicy 设置引起的脚本执行错误

要执行脚本,需要将 ExecutionPolicy 改为 RemoteSigned

$ set-ExecutionPolicy RemoteSigned

修改 PowerShell 的 ExecutionPolicy

运行 get-help about_signing 可以查看 PowerShell 的脚本签名策略。

ExecutionPolicy 的默认值是 restricted,即不允许运行任何脚本(吐槽一下,不能运行脚本的 Shell 还敢号称 PowerShell???),当然这样是出于安全的考虑。通过 set-ExecutionPolicy 可以将其改为 allsignedremotesigned

关于脚本签名,我的理解是类似于(古老的)赛班系统的软件签名,就是说要有某个证书来保证脚本的安全性。关于如何签名,get-help 中也作了详细的介绍,可以看出伪造签名并不是一件容易的事情。如果实在要运行末经签名的脚本,可以到脚本文件的属性设置中选择“取消阻止”。