VSCode切换Python2和Python3
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.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
参考 Code Runner 在Github上的issue:
用户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
时是不带双引号的,而我又是把Python2和Python3的可执行文件放在有空格的目录下,导致:
由于路径中有
Program Files
,它直接在空格那截断了解决它的方法就是人为添加上双引号,最终我的
code-runner.executorMap
的设置为:
最终效果为:
执行Python2代码:
点击左下角切换到Python3,直接运行:
这样只用切换左下角的解释器,就能快速运行Python2和Python3的代码了