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.exe
和 pythonw.exe
重命名为 python2.exe
和 pythonw2.exe
所以在cmd中,如果想使用Python2,就键入 python2
;如果想使用Python3,键入默认的 python
即可
留意到下图中的这里(红框处):
检查发现,无论是Python2还是Python3,[Running]
后面的指令都是 python -u
;这就相当于我们在cmd始终执行的是 python -u xxx.py
指令,虽然我们Python2的路径是正确的,但始终没有用到
原来是之前安装的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
用户dhdavvie给出了一个解决方案:
"code-runner.executorMap": {
"python": "$pythonPath $fullFileName",
},
"code-runner.runInTerminal": true
在运行Python代码时,它不再直接执行 python -u xxx.py
或 python2 -u xxx.py
,而是把两个参数的值作为指令:第一个参数是Python解释器的路径 $pythonPath
、第二个是待执行的文件 $fullFileName
;这样就相当于直接用Python的可执行文件执行 .py
这里有点小问题,VSCode在输出
$pythonPath
由于路径中有
Program Files
,它直接在空格那截断了解决它的方法就是人为添加上双引号,最终我的
code-runner.executorMap
最终效果为:
- 执行Python2代码:
- 点击左下角切换到Python3,直接运行:
这样只用切换左下角的解释器,就能快速运行Python2和Python3的代码了