virtualenv v16.7.2 powershell激活脚本:“您必须'获取'此脚本:PS>。。\ ENV \ Scripts \ activate”错误

时间:2019-08-01 23:53:43

标签: python powershell windows-10 virtualenv

问题

最新版本的python v.3.7.4上的virtualenv(16.7.2)在“ activate.ps1”脚本中附加了4行,当在Windows10 powerhsell上运行时,会显示错误:You must 'source' this script: PS> . .\ENV\Scripts\activate 我该如何解决? (请注意,我已经阅读并完成了其他论坛问题以及与Windows和Powershell相关的virtualenv手册中提到的所有内容。)

我采取的步骤/尝试过的事情:**

我已将执行策略设置为RemoteSigned(如其他论坛所建议):

Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

当我想激活virtualenv时,我运行.\ENV\Scripts\activate

问题出在哪里

问题出在当您创建新的虚拟环境时,由virtualenv自动生成的activate.ps1脚本的第3至6行:

if (@($null,"Internal") -notcontains $myinvocation.commandorigin) {
    Write-Host -Foreground red "You must 'source' this script: PS> . $($myinvocation.invocationname)"
    exit 33
}

似乎$myinvocation.commandorigin设置为 Runspace 而不是 Internal

问题

该如何解决?有任何想法吗?谢谢 :))) 请注意,我不想手动调整每个自动生成的activate.ps1文件。

4 个答案:

答案 0 :(得分:6)

让我们看看该错误消息:

  

You must 'source' this script: PS> . .\ENV\Scripts\activate

嗯...-PS>可能只是提示,这给了我们:

  . .\ENV\Scripts\activate
# ^
# |
# Check out this guy

那是路径前面的孤独.,即powershell中的点源运算符

根据the documentation,它是:

  

在当前范围内运行脚本,以便将脚本创建的所有函数,别名和变量添加到当前范围。

我没有看过virtualenv,但是我想它将要定义多个变量,并确保在脚本运行后这些变量仍然存在,因此需要在当前脚本中运行范围。

这是您必须运行以解决的 literal 命令:

. .\ENV\Scripts\activate

答案 1 :(得分:4)

我也遇到了这个问题。为了解决这个问题,我创建了一个新的虚拟环境,如下所示:

python -m venv directory-name

要激活:

Scripts>./activate

现在一切正常...

答案 2 :(得分:4)

Screenshot attached for reference. 我刚刚遇到了同样的问题,但是我做了以下事情:

  1. 创建一个新的虚拟环境;

    python -m venv directory

  2. 导航到新创建的目录;

    cd directory

  3. 激活虚拟环境。

    .\Scripts\activate

这解决了我的问题。希望对您有帮助...

答案 3 :(得分:0)

我也面临同样的问题,使用此方法解决了这个问题:

创建虚拟环境,方法是: virtualenv环境

创建虚拟环境后

我通过使用激活了它:

source environment/bin/activate 

它激活了我的虚拟环境