如何解决vscode无法自动启动python虚拟环境?

问题描述

最近换了块阿普杜拉 默罕默德 科斯特洛夫斯基当系统盘, 重新装好系统, 然后配置vscode + virtualenv后,在vscode 中打开powershell, 发现无法自动进入虚拟环境, 会出现一个如下所示的报错
You must 'source' this script: PS> . &

相关思考

因为vscode 默认会勾选在启动终端时激活虚拟环境,如下图:
如何解决vscode无法自动启动python虚拟环境?

所以当我打开终端时, 它会默认执行下列命令:
& C:/Users/usrname/envs/tnd/Scripts/activate.ps1

但是不知道是我当前的powershell 还是 windows的问题, powershell不再认可&命令执行sp1文件

当前windows版本:

如何解决vscode无法自动启动python虚拟环境?

当前powershell版本:

如何解决vscode无法自动启动python虚拟环境?

做过的测试

因为是个windows系统开发的小白, 所以就打开另外一台可以用的电脑测试了一下, 发现vscode自动执行的命令是一样的, 同时powershell的版本一致, windows的版本为18362.239, 比故障机版本旧一点

看了一下activate.ps1文件的内容, 发现罪魁祸首是下面的几行代码:

if (@($null,"Internal") -notcontains $myinvocation.commandorigin) {

Write-Host -Foreground red "You must 'source' this script: PS> . $($myinvocation.invocationname)"

exit 33

}

我把这几行注释掉就可以正常使用, 但是这是为什么呢?(原谅我看不懂powershell脚本)
恳请各位大佬不吝赐教!


回答:

我发现可以使用的电脑virtualenv的版本比较旧, 然后我怀疑是virtualenv的问题, 于是我去github看了一下.
发现会导致问题的代码是在一个issue里被提交,然后merge进去的, 但是作者好像并没有发现这个会影响powershell用户.
于是我使用了旧版本的virtualenv.
pip install virtualenv==16.6.2
不确定其他稍微新一点的版本是否能用, 目前确定可以用的是16.6.2这个版本.

以上是 如何解决vscode无法自动启动python虚拟环境? 的全部内容, 来源链接: utcz.com/p/188255.html

回到顶部