V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
strolling
V2EX  ›  程序员

如何在 VScode 中配置 Python 的交互式命令环境

  •  
  •   strolling · Aug 19, 2016 · 14207 views
    This topic created in 3548 days ago, the information mentioned may be changed or developed.

    之前一直用 sublime text3 ,其中有一个叫 sublimeREPL 的插件可以提供 Python 的交互式运行界面,同时可以解决运行时不能从控制台输入的问题。

    前段时间下了个 VScode ,感觉 VScode 的颜值更高一点儿,所以想继续用下去。在 VScode 里 Python 的插件看到大家都推荐“ Python ”这个插件,这个插件装上以后在 VScode 里可以对 Python 代码进行断点调试,但是我并没有找到交互式运行的输入位置,运行总会在 input 函数的位置停住。

    想问一下 VScode 里是否有类似 sublime text3 的 REPL 的插件,或者可以实现 Python 的 IDLE 的功能的插件。

    希望各位大神不吝惜赐教

    7 replies    2016-08-20 14:07:48 +08:00
    bdbai
        1
    bdbai  
       Aug 20, 2016   ❤️ 1
    平时很少用 input ,还真没注意过这个问题。

    有人给插件提了 issue
    https://github.com/DonJayamanne/pythonVSCode/issues/242
    作者表示新功能已上线,我就用 “ Python Console App ” 试了一下, VSCode 报错 “调试适配器进程已意外终止”。

    顺手翻了一下代码,吓尿.... https://github.com/DonJayamanne/pythonVSCode/blob/master/src/client/common/open.ts#L54

    楼主心情好的话可以自己魔改这个文件:
    ~/.vscode/extensions/donjayamanne.python-0.3.21/out/client/common/open.js
    把 43 、 44 行改成适合自己终端的样子,然后就可以用了。
    strolling
        2
    strolling  
    OP
       Aug 20, 2016
    @bdbai 不好意思没找到怎么回复某一层的功能,只能 @了。。。

    感谢回复,有个问题我没说清楚,我使用的系统是 Windows 系统,层主介绍的这个方法似乎只适用于 Linux 平台吧,我在我的 VScode 安转目录下没找到层主所说的那个文件。另外,‘ Python Console App ’是一个插件吗?
    bdbai
        3
    bdbai  
       Aug 20, 2016 via Android
    @strolling 点右上角箭头可以快速 @

    手边没有 Windows 系统,把 gnome-terminal -x -c 改成 cmd /k 试下?
    在你的用户 AppData 目录下找找,记得显示隐藏文件。

    使用 Python 插件的时候,按 F5 它会生成几个调试配置,其中有一个叫“ Python Console App ”,在“调试”页左上方切换。这个配置的本意是调用一个外部终端来运行调试中的程序,但作者调皮地把它写死了 gnome-terminal 。
    strolling
        4
    strolling  
    OP
       Aug 20, 2016
    @bdbai 感谢大神耐心的回复,我一开始找错位置了,原来是在 C 盘的用户目录下。

    嗯,我找到那个文件了,对于 Windows 系统,应该是这几行吧

    else if (process.platform === 'win32') {
    cmd = 'cmd';
    args.push('/c', 'start');
    if (opts.wait) {
    args.push('/wait');
    }
    if (opts.app) {
    args.push(opts.app);
    }
    if (appArgs.length > 0) {
    args = args.concat(appArgs);
    }
    }

    试了一下,在调试的时候用“ Python console App ”的确会弹出一个命令行窗口,但是不知道出了什么 bug ,没法儿输入,而且这个是在调试的时候设置一个断点才能弹出,直接运行的话还是没法执行 input 函数。

    其实我对 input 没什么需求,因为在学用 python 进行数据分析,所以希望能有一个交互式的界面,能够写一行运行一行,观察每一个命令的效果,这方面感觉 Spyder 做得相当好,简直就是一个 matlab 。看来 VScode 还需要一段时间来完善
    bdbai
        5
    bdbai  
       Aug 20, 2016 via Android   ❤️ 1
    @strolling 被那个 issue 带跑了...
    我经常这么做:参数放进 launch.json 配置的 args 或 env 中,程序里面读。
    在 vscode 里面按 Ctrl+` 可以调出内置命令行,然后直接运行程序。
    strolling
        6
    strolling  
    OP
       Aug 20, 2016
    @bdbai 感谢解惑。还有一个问题想问问,为什么同样的字体显示效果在不同的编辑器里不一样,我喜欢使用 consolas 这个字体,感觉在 VScode 里面显示的结果要比 sublime text 和 notepad++舒服,这是什么原因导致的
    bdbai
        7
    bdbai  
       Aug 20, 2016 via Android
    @strolling 我也不太清楚😂
    VScode 是用 Electron 套的,估计 Chrome 有什么黑科技吧。
    大小写好纠结...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3486 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 11:16 · PVG 19:16 · LAX 04:16 · JFK 07:16
    ♥ Do have faith in what you're doing.