在PowerShell中使用virtualenv?

103

在使用PowerShell时,使用virtualenv似乎会出现问题。

当我尝试在PowerShell中激活我的环境时,例如...

env/scripts/activate

.. 什么都没有发生。(应该已经改变了 shell 提示符和 PATH 环境变量。)

我猜问题在于 PowerShell 为运行 activate.bat 而产生了一个新的 cmd 进程,因此在 activate.bat 完成后对 shell 所做的更改失效。

你有任何解决办法吗?(目前我还在使用 cmd.exe)

19个回答

160

最新版本的virtualenv支持PowerShell。

只需确保运行:

Scripts\activate.ps1

取代

Scripts\activate

后者将执行activate.bat,但在PowerShell上无法正常工作。


71
如果脚本无法运行,可能需要运行set-executionpolicy RemoteSigned命令(我的默认值为Restricted)。文档链接 - Alex L
3
只需输入“deactivate”即可撤销操作。 - Vadim K
1
请注意,该脚本创建了一个名为“deactivate”的内存函数用于去激活。 - jpmc26
3
我必须写成:./Activate.ps1,否则对我来说无法工作。 - Quitiweb
14
如果您没有管理员权限,可能需要运行set-executionpolicy RemoteSigned -Scope CurrentUser而不是Alex L提供的命令。 - micsthepick
显示剩余3条评论

55

我的原始回答已经过时了。现在,只需使用activate.ps1(而不是activate.bat)来在Powershell环境中激活即可。


原始回答:

这里有一篇文章,其中包含一个Powershell脚本,允许您运行持续修改其环境变量的批处理文件。该脚本会将任何环境变量更改传播回调用Powershell环境。


这个可以工作,但是无法添加提示参数。必须有一个 activate.ps1 可以在设置提示之前调用 Write-Host。 - Mike Caron
3
这个回答已经过时,因为 virtualenv 已经原生地支持 PowerShell,如 https://dev59.com/8nM_5IYBdhLWcg3wdy_z#10030999 所指出的。 - Jorge Vargas
链接跳转到 404 页面。 - Rich Steinmetz
链接丢失。 - abhimanyuaryan
1
尝试运行:./Activate.ps1 - Quitiweb
venv\Scripts\Activate.ps1 是我在 Powershell 中需要使用的。 - undefined

46

运行此命令:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

随后是:

./env/Scripts/activate.ps1

就是这样


1
如果您正在使用 python -m venv venv 来构建虚拟环境,那么脚本的名称将是 Activate.ps1 - Mohammad Saad

24

一个快速的解决方法是调用cmd,然后在cmd会话中运行你的activate.bat。例如:

PS C:\my_cool_env\Scripts> cmd
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\my_cool_env\Scripts>activate.bat
(my_cool_env) C:\my_cool_env\Scripts>

17

在您的虚拟环境文件夹的Scripts目录中,有几个可以使用的激活脚本,具体取决于您在执行命令的位置。如果您正在尝试从Windows PowerShell激活虚拟环境,请尝试使用以下命令:

. .\env\Scripts\activate.ps1

如果您收到有关禁用激活脚本的错误消息,则首先需要在系统上调用一个执行策略更改。这需要管理员权限。

操作步骤如下:

1)右键单击PowerShell应用程序,选择以管理员身份运行

2)运行以下命令:Set-ExecutionPolicy Unrestricted

3)重新运行激活命令:. .\env\Scripts\activate.ps1


6

尝试这个命令:. .\env\Scripts\activate.ps1 注意点和空格。


4

4

Windows用户

在Powershell中:

  1. 以管理员身份运行 Powershell
  2. 复制并粘贴以下命令:set-executionpolicy remotesigned
  3. 同意弹出的消息。

最后,运行

your_virtualenv_name\Scripts\activate.ps1

与其

your_virtualenv_name\Scripts\activate.bat

在命令行窗口(CMD)中,只需运行:

your_virtualenv_name\Scripts\activate.bat

4

无法加载env\Scripts\Activate.ps1,因为此系统禁用了脚本执行。

可以使用Set-Execution Policy命令允许当前用户运行脚本,如下所示。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

之后运行...

env/Scripts/Activate.ps1

2
在Windows PowerShell上,我需要在venv / Scripts文件夹中键入:
. ./activate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接