激活脚本
刚创建的隔离环境下会有一个 bin/activate
命令行脚本。在Windows下,激活脚本要在CMD.exe或Powershell.exe中使用。
在Posix系统(*nix/BSD)中,用法如下:
- $ source bin/activate
该操作会将当前 $PATH
指向隔离环境下的 bin/
目录。之所以要用source是因为它要改变当前shell环境。仅仅就是一行命令,就这么简单。如果直接运行隔离环境下的脚本或是python解释器(比如 path/to/env/bin/pip
or/path/to/env/bin/python script.py
),那都没必要使用激活脚本。
输入 deactivate
就能退出已激活的隔离环境,也就是取消对当前 $PATH
所做的修改。
activate
脚本会修改当前shell命令行提示符,以提示当前激活的是哪个隔离环境。这是挺有用的,不过要是想自定义的提示符,只要在运行 activate
前将 VIRTUAL_ENV_DISABLE_PROMPT
设为你想要的提示(不能为空字符串)。
在Windows下只须如此(*nix用户此处就不用看了,包括下面的注意也不用看了):
- > \path\to\env\Scripts\activate
输入 deactivate 就能退出隔离环境。
视你用的shell不同(CMD.exe或Powershell.exe),Windows会使用activate.bat或activate.ps1来激活隔离环境。如果使用的是Powershell,那么以下几点值得注意。
注意(说真的,开发python还是在*nix下好,真的真的真的!):
使用Powershell时,运行 activate
脚本取决于执行策略
_ 。但在Windows7下,默认情况下执行策略被设为严格,
这就意味着象 activate
这样的脚本是不能直接运行的。但稍微设置一下即可。
降低执行策略,改为 AllSigned
, 这就意味着本机所有已通过数字签名的脚本都获许运行。
由于virtualenv作者之一Jannis Leidel的数字签名已被核准,允许运行。那么只要以管理员权限运行::
接下来运行脚本时会提示是否信任该签名::
- PS C:\> Set-ExecutionPolicy AllSigned
- PS C:\> virtualenv .\foo
- New python executable in C:\foo\Scripts\python.exe
- Installing setuptools................done.
- Installing pip...................done.
- PS C:\> .\foo\scripts\activate
- Do you want to run software from this untrusted publisher?
- File C:\foo\scripts\activate.ps1 is published by E=jannis@leidel.info,
- CN=Jannis Leidel, L=Berlin, S=Berlin, C=DE, Description=581796-Gh7xfJxkxQSIO4E0
- and is not trusted on your system. Only run scripts from trusted publishers.
- [V] Never run [D] Do not run [R] Run once [A] Always run [?] Help
- (default is "D"):A
- (foo) PS C:\>
如果选择了 [A] Always Run
, 该证书就会添加到当前帐户下的受信任发布者名单中,而且此后一直被该用户所信任。
如果选择了 [R] Run Once
, 该脚本会立即运行,但之后每次使用都会重新出现信任提示并选择。
高级用户可以将该证书添加到当前计算机的受信任发布者名单中,这样所有用户都可以使用该脚本了(不过这部分内容已经超过了本文档范畴了)。
此外,还可以进一步降低执行策略,允行未验证的本地脚本运行::
- PS C:\> Set-ExecutionPolicy RemoteSigned
因为对任何一个virtualenv环境而言,
activate.ps1
都是一个本地脚本而非远程脚本,因为可以获准运行。