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
文件。
让我们看一下该错误消息:
You must 'source' this script: PS> . .\ENV\Scripts\activate
嗯... -
PS>
可能只是提示,这给我们留下了这个:
. .\ENV\Scripts\activate
# ^
# |
# Check out this guy
那个,路径前面那个孤独的
.
,就是powershell中的点源运算符。
根据文档,它:
在当前作用域中运行脚本,以便脚本创建的任何函数、别名和变量都添加到当前作用域中。
我还没有看过
virtualenv
,但我认为它需要定义许多变量,并确保这些变量在脚本运行后持续存在,它需要在当前范围内运行。
所以这是您必须运行来修复它的literal命令:
. .\ENV\Scripts\activate
我也遇到过这个问题。为了解决这个问题,我创建了一个新的虚拟环境,如下所示:
python -m venv directory-name
激活:
Scripts>./activate
现在一切正常......
我也遇到了同样的问题,用这个解决了它:
创建虚拟环境: 虚拟环境
创建虚拟环境后
我通过使用激活它:
source environment/bin/activate
它激活了我的虚拟环境
我创建了新的 virtualenv,如下所示:
python -m ven 目录名称。
cd 到创建的目录。
然后我像往常一样激活目录。