V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
tars2018
V2EX  ›  Python

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

  •  
  •   tars2018 · 2021-03-16 20:39:59 +08:00 · 2414 次点击
    这是一个创建于 1130 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人新手最近在学 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" }

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

    12 条回复    2021-03-17 13:57:46 +08:00
    learningman
        1
    learningman  
       2021-03-16 21:18:44 +08:00
    我怎么记得是__main__?
    tars2018
        2
    tars2018  
    OP
       2021-03-16 22:45:11 +08:00
    @learningman 不好意思,写错了是 __main__ ,改了之后问题依然存在
    ch2
        3
    ch2  
       2021-03-16 23:56:42 +08:00
    pkookp8
        4
    pkookp8  
       2021-03-17 00:42:59 +08:00 via Android
    右下角手动把文件改成 utf8 编码再试试呢
    jeeyong
        5
    jeeyong  
       2021-03-17 07:35:49 +08:00   ❤️ 1
    在 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
        6
    jeeyong  
       2021-03-17 07:36:40 +08:00
    回复完看到的, 3 楼正解
    xiadong1994
        7
    xiadong1994  
       2021-03-17 08:06:00 +08:00
    2021 年了 windows 怎么还有编码问题
    chenqh
        8
    chenqh  
       2021-03-17 08:15:32 +08:00
    coder_runner 可以 runn in terminal 的呀
    liuhuansir
        9
    liuhuansir  
       2021-03-17 08:27:48 +08:00 via Android   ❤️ 1
    pycharm 社区版开箱即用,新手更不该花时间在工具上折腾
    tars2018
        10
    tars2018  
    OP
       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
        11
    jeeyong  
       2021-03-17 10:24:52 +08:00
    @tars2018 #10 哦哦..去掉这两行..
    #!/usr/bin/env python3
    #coding=utf-8

    应该就好了.
    xumng123
        12
    xumng123  
       2021-03-17 13:57:46 +08:00 via iPhone
    原作者经常出没这里,应该可解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2856 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:16 · PVG 15:16 · LAX 00:16 · JFK 03:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.