VScode code Runner 插件一个很奇怪的问题

2021-03-16 20:39:59 +08:00
 tars2018

本人新手最近在学 python,今天在 vscode 里面安装了 code runner 插件来运行 python 代码,但是遇上了一个问题,请各位大佬帮忙看看:

新建一个 python 文件 Constants.py

#!/usr/bin/env python3 #coding=utf-8

if name=="main": print("Hello World")

使用 python Constants.py 可以正常运行:

E:\vscodeWorkSpace\python-web-app>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe e:/vscodeWorkSpace/python-web-app/www/Constants.py Hello World

但是使用 code runner 运行就会报错:

[Running] /usr/bin/env python3 "e:\vscodeWorkSpace\python-web-app\www\Constants.py" ϵͳ�Ҳ���ָ����·����

code runner 配置如下:

"code-runner.executorMap": { "python": "set PYTHONIOENCODING=utf8 && python $fullFileName" }

请问是插件的问题,还是我配置的问题?

2426 次点击
所在节点    Python
12 条回复
learningman
2021-03-16 21:18:44 +08:00
我怎么记得是__main__?
tars2018
2021-03-16 22:45:11 +08:00
@learningman 不好意思,写错了是 __main__ ,改了之后问题依然存在
ch2
2021-03-16 23:56:42 +08:00
pkookp8
2021-03-17 00:42:59 +08:00
右下角手动把文件改成 utf8 编码再试试呢
jeeyong
2021-03-17 07:35:49 +08:00
在 vscode 的 settings 里添加这个
"code-runner.executorMap": {
"python": "set PYTHONIOENCODING=UTF-8 && .venv\\Scripts\\python -u"
},

重要的是 set PYTHONIOENCODING=UTF-8 这句将环境设置为 utf-8 编码..
&&后面那个你默认为 python -u 就好, 我是在用 virtualenv 所以设置的是虚拟环境的 python 路径..或者你设置成你需要的 python 路径.
-u 是强制实时输出打印结果.

你试试.. 无论有效与否, 最好请告知我.
jeeyong
2021-03-17 07:36:40 +08:00
回复完看到的, 3 楼正解
xiadong1994
2021-03-17 08:06:00 +08:00
2021 年了 windows 怎么还有编码问题
chenqh
2021-03-17 08:15:32 +08:00
coder_runner 可以 runn in terminal 的呀
liuhuansir
2021-03-17 08:27:48 +08:00
pycharm 社区版开箱即用,新手更不该花时间在工具上折腾
tars2018
2021-03-17 09:22:04 +08:00
@jeeyong
按照你的方法试了一下:

setting.json

"code-runner.executorMap": {
"python": "set PYTHONIOENCODING=UTF-8 && C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\python.exe -u"
}

Constants.py

#!/usr/bin/env python3
#coding=utf-8

if __name__=="__main__":
print("Hello World...")

运行结果:
[Running] /usr/bin/env python3 "e:\vscodeWorkSpace\python-web-app\www\Constants.py"
ϵͳ�Ҳ���ָ����·����

[Done] exited with code=1 in 0.264 seconds

对照的一个 python 文件 Test.py

#coding=utf-8

if __name__=="__main__":
print("Hello Word...")

运行结果:
[Running] set PYTHONIOENCODING=UTF-8 && C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe -u "e:\vscodeWorkSpace\python-web-app\www\Test.py"
Hello Word...

[Done] exited with code=0 in 0.612 seconds

可以看到 /usr/bin/env python3 "e:\vscodeWorkSpace\python-web-app\www\Constants.py"
应该就是这个造成的,code runner 先读取的这一行,没有直接调用 python.exe 运行 Constants.py

一会我试试 virtualenv 能不能解决这个问题,谢谢!
jeeyong
2021-03-17 10:24:52 +08:00
@tars2018 #10 哦哦..去掉这两行..
#!/usr/bin/env python3
#coding=utf-8

应该就好了.
xumng123
2021-03-17 13:57:46 +08:00
原作者经常出没这里,应该可解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX