V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
strolling
V2EX  ›  程序员

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

  •  
  •   strolling · 2016-08-19 17:55:44 +08:00 · 12662 次点击
    这是一个创建于 1699 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    希望各位大神不吝惜赐教

    7 条回复    2016-08-20 14:07:48 +08:00
    bdbai
        1
    bdbai   2016-08-20 00:03:34 +08:00   ❤️ 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   2016-08-20 10:16:58 +08:00
    @bdbai 不好意思没找到怎么回复某一层的功能,只能 @了。。。

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

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

    使用 Python 插件的时候,按 F5 它会生成几个调试配置,其中有一个叫“ Python Console App ”,在“调试”页左上方切换。这个配置的本意是调用一个外部终端来运行调试中的程序,但作者调皮地把它写死了 gnome-terminal 。
    strolling
        4
    strolling   2016-08-20 12:11:31 +08:00
    @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   2016-08-20 13:04:59 +08:00 via Android   ❤️ 1
    @strolling 被那个 issue 带跑了...
    我经常这么做:参数放进 launch.json 配置的 args 或 env 中,程序里面读。
    在 vscode 里面按 Ctrl+` 可以调出内置命令行,然后直接运行程序。
    strolling
        6
    strolling   2016-08-20 13:28:21 +08:00
    @bdbai 感谢解惑。还有一个问题想问问,为什么同样的字体显示效果在不同的编辑器里不一样,我喜欢使用 consolas 这个字体,感觉在 VScode 里面显示的结果要比 sublime text 和 notepad++舒服,这是什么原因导致的
    bdbai
        7
    bdbai   2016-08-20 14:07:48 +08:00 via Android
    @strolling 我也不太清楚😂
    VScode 是用 Electron 套的,估计 Chrome 有什么黑科技吧。
    大小写好纠结...
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   933 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 21:00 · PVG 05:00 · LAX 14:00 · JFK 17:00
    ♥ Do have faith in what you're doing.