virtualenv v16.7.2 powershell 激活脚本:“您必须‘来源’此脚本:PS> . .\ENV\Scripts ctivate”错误

问题描述 投票:0回答:5

问题

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
文件。

python powershell windows-10 virtualenv
5个回答
14
投票

让我们看一下该错误消息:

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

嗯... -

PS>
可能只是提示,这给我们留下了这个:

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

那个,路径前面那个孤独的

.
,就是powershell中的点源运算符

根据文档,它:

在当前作用域中运行脚本,以便脚本创建的任何函数、别名和变量都添加到当前作用域中。

我还没有看过

virtualenv
,但我认为它需要定义许多变量,并确保这些变量在脚本运行后持续存在,它需要在当前范围内运行。

所以这是您必须运行来修复它的literal命令:

. .\ENV\Scripts\activate

4
投票

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

  1. 创建新的虚拟环境;

    python -m venv directory

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

    cd directory

  3. 激活虚拟环境。

    .\Scripts\activate

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


4
投票

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

python -m venv directory-name

激活:

Scripts>./activate

现在一切正常......


0
投票

我也遇到了同样的问题,用这个解决了它:

创建虚拟环境: 虚拟环境

创建虚拟环境后

我通过使用激活它:

source environment/bin/activate 

它激活了我的虚拟环境


0
投票
  1. 我创建了新的 virtualenv,如下所示:

  2. python -m ven 目录名称。

  3. cd 到创建的目录。

  4. 然后我像往常一样激活目录。

© www.soinside.com 2019 - 2024. All rights reserved.