VSCode切换Python2和Python3

VSCode切换使用Python2和Python3

起因

其实VSCode很早之前就安装了,但是一直没用它,现在才用,所以导致现在不记得自己安装过什么插件、修改过什么配置…

点击左侧的扩展,可以看到我安装过Code Runner这个插件,也正是因为此,我能直接在目录下新建一个临时的 temp.py 文件,并且用VSCode打开,编写完代码后按下快捷键Ctrl+Alt+N,快速运行代码;这对运行一些零散的Python脚本而言十分便捷

但是今天发现编写了一些Python2的代码,点击左下角的切换到Python2的解释器,却发现无法运行:

在这里插入图片描述

VSCode的设置中搜索 python.pythonpath,发现Python2的路径没有问题:

在这里插入图片描述

解决

原因在于我的电脑中同时安装了Python2和Python3,如果只有一个版本的Python,那么在终端进入Python窗口时,只需键入 python;但同时有了Python2和Python3,那么我就前往Python2的安装目录下,把Python2的可执行文件 python.exepythonw.exe 重命名为 python2.exepythonw2.exe

在这里插入图片描述

所以在cmd中,如果想使用Python2,就键入 python2;如果想使用Python3,键入默认的 python 即可

留意到下图中的这里(红框处):

在这里插入图片描述

检查发现,无论是Python2还是Python3,[Running] 后面的指令都是 python -u;这就相当于我们在cmd始终执行的是 python -u xxx.py 指令,虽然我们Python2的路径是正确的,但始终没有用到

参考 https://stackoverflow.com/questions/54299927/vscode-running-python-2-instead-of-3,原来是之前安装的Code Runner的锅,我们打开VSCode的设置,搜索 code-runner.executormap,可以看到:

在这里插入图片描述

Code Runner根据你运行的代码类型,会自动添加指令,这就相当于你在cmd下执行了指令 python -u xxx.py;我们尝试把黄色框中的 "python -u" 改成 "python2 -u",这样Python2的代码就能成功运行了

在这里插入图片描述

但是Python3代码反而不能运行了

它坑就坑在不会对Python2和Python3进行区分,如果我们点击左下角切换解释器,会发现上图中的 python.pythonPath 会发生改变,但 code-runner.executorMap 则不会,也就是说Python2和Python3共用一个 code-runner.executorMap

这就导致了想快捷键直接运行Python代码,必须看你设置的是 python -u 还是 python2 -u

参考Code Runner在Github上的issue:https://github.com/formulahendry/vscode-code-runner/issues/395

用户dhdavvie给出了一个解决方案:

    "code-runner.executorMap": {
        "python": "$pythonPath $fullFileName",
    },
    "code-runner.runInTerminal": true

在运行Python代码时,它不再直接执行 python -u xxx.pypython2 -u xxx.py,而是把两个参数的值作为指令:第一个参数是Python解释器的路径 $pythonPath、第二个是待执行的文件 $fullFileName;这样就相当于直接用Python的可执行文件执行 .py

这里有点小问题,VSCode在输出 $pythonPath 时是不带双引号的,而我又是把Python2和Python3的可执行文件放在有空格的目录下,导致:

在这里插入图片描述

由于路径中有 Program Files,它直接在空格那截断了

解决它的方法就是人为添加上双引号,最终我的 code-runner.executorMap 的设置为:

最终效果为:

  • 执行Python2代码:

  • 点击左下角切换到Python3,直接运行:

这样只用切换左下角的解释器,就能快速运行Python2和Python3的代码了

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值