惯例先看报错代码
[Running] set PYTHONIOENCODING=utf8 && C:\Program Files\Python39\python.exe "c:\Users\aerody\Desktop\1\s.py"
'C:\Program' �����ڲ����ⲿ���Ҳ���ǿ����еij���
�����������
[Done] exited with code=1 in 0.041 seconds
运行环境:win10,vscode,使用插件code runner运行后报错,首先这个不是中文乱码报错,因为源代码中没有中文也会乱码报错(虚拟机里展示):
这个问题只针对在windows下的vscode中使用coderunner插件运行官方python环境出现的乱码报错问题。
假如你是因为中文代码输出报错,解决办法也挺多的可以查看相关文章,而我就是在settings下添加如下代码(第一行注释是让coderunner调用系统终端运行,放开注释的话也会解决乱码问题,第一行和后面的代码随便注释一个,使用另一个运行代码即可,今天讲的问题是使用coderunner运行输出):
// "code-runner.runInTerminal": true, //let codernner run with terminal
"code-runner.executorMap": {
"python": "set PYTHONIOENCODING=utf8 && $pythonPath $fullFileName",
},
下来进入正题:为什么英文代码运行也会乱码?
首先我电脑安装了anaconda和python官方的解释器,平时运行环境也是用conda下的python解释器,但是今天更新完vscode后新建程序,环境自动切换到了python官方环境下。
anaconda环境中左下角是这个模样
python官方环境长这样:
结果是在conda环境下coderunner可以正常运行输出结果,但是用官方的python环境就会输出错误。
开始我以为是官方的解释器是不是缺少什么而引起的代码运行错误,然后使用官方的python交互工具运行代码,结果代码正常输出
然后我对比了输出结果:正常的输出是这样的
[Running] set PYTHONIOENCODING=utf8 && C:\ProgramData\Anaconda3\python.exe "e:\project\data_ana\test.py"
helloworld
世界你好!
非正常输出(虚拟机演示结果):
[Running] set PYTHONIOENCODING=utf8 && C:\Program Files\Python39\python.exe "c:\Users\aerody\Desktop\1\s.py"
'C:\Program' �����ڲ����ⲿ���Ҳ���ǿ����еij���
�����������
可以看出,明明我调用的是官方自带的解释器,自带解释器路径是C:\Program Files\Python39\python.exe
但是程序竟然有自己的想法向,似乎想调用C:\Program' 里面的某个程序执行,但是又好像没发现,所以程序报错。
到这里对代码敏感的可能一下就发现问题所在,没错!就是官方python安装的路径有问题,那个Program Files 文件夹中间有个空格键,就是这个空格键造成coderunner无法识别执行路径造成的,归根结底还是windows的锅。于是卸载官方python,重新安装到一个没有空格分隔的文件夹下,这里我安装在了C:\ProgramData\Python39
然后vscode,切换到官方python环境下,运行程序,完美解决。
总结:这个问题只针对在windows下的vscode中使用coderunner插件运行官方python环境出现的乱码报错问题。
欢迎讨论交流!