在VS Code中使用IPython REPL

cbr*_*rnr 13 python ipython visual-studio-code

使用Visual Studio Code的Python扩展,我可以选择一些代码,右键单击它,然后选择"在Python终端中运行选择/行"(或者,我可以按Shift + Enter).但是,这会将所选代码发送到终端窗格中的普通旧Python REPL,而我希望此代码在IPython中运行(而不是QtConsole,只是基于终端的IPython).

是否可以将IPython设置为默认REPL?我尝试将其设置/usr/local/bin/ipython3为我的默认Python环境,但这不起作用(它仍然执行普通的Python解释器).FWIW,我在macOS上.

Fen*_*Mai 20

添加以下设置(首选项:打开设置 JSON;或首选项 -> 设置 -> 搜索launchArgs-> 在 json 中编辑)无需任何扩展即可工作。它还修复了无法将多行发送到 Python 的问题。

"python.terminal.launchArgs": [
    "-c",
    "\"import subprocess; subprocess.call(['ipython', '--no-autoindent'])\""
],
Run Code Online (Sandbox Code Playgroud)

更新(2020-12-27):以下设置似乎效果更好,因为它在没有现有 IPython 的情况下支持 Ctrl+C 键盘中断:

"python.terminal.launchArgs": [
    "-m",
    "IPython",
    "--no-autoindent",
],
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,我认为“-i”应该添加到这个列表中。 (2认同)

jmh*_*jmh 8

在终端窗口中输入Ipython.然后从编辑器窗口中选择要运行的一行或多行,然后单击VScode窗口顶部的"终端"菜单.终端菜单中的一个选项是"运行所选文本".这将在Ipython终端窗口中运行.我不知道如何使它成为默认值,但它似乎保持在该状态,除非Ipython被停止.注意:您必须使用"菜单"项运行您的选择.在编辑器窗口中单击鼠标右键并单击"运行选择"将不会使用Ipython窗口.我希望这很清楚.如果不只是发表评论.

  • 我再次尝试使用多行,但它不起作用.我之前的评论错了.我尝试了几件事,但我无法让它运行多行. (4认同)
  • 很好,这有效!我不敢相信这这么难找到,Python 插件似乎应该默认这种行为,而不是它现在正在做的事情。我已将此功能映射到 Shift+Enter 快捷键,效果非常好! (2认同)

ale*_* li 7

使用“IPython for VSCode”插件。

安装它然后使用 Send Select Text (or current line) To IPython

如果你想与原来使用的快捷键设置shift+enter上述执行命令时,使用的一个下面的方法。

快捷方式设置 - 正常

  1. 打开快捷方式设置:Macos 是cmd+k cmd+s.

  2. 上面的搜索命令并右键单击将键盘绑定修改为shift+enter.

  3. 接下来,再次右键单击以修改When expression为:

editorTextFocus && !findInputFocussed && !python.datascience.ownsSelection && !replaceInputFocussed && editorLangId == 'python'
Run Code Online (Sandbox Code Playgroud)
  1. 右键单击并选择 show same key bindings

  2. 查找命令Python: Run Selection/Line in Python Terminal并右键单击以禁用它。

快捷方式设置 - JSON

  1. 打开快捷方式设置,点击右上角打开JSON配置

  2. 附加这些设置:

    {
        "key": "shift+enter",
        "command": "ipython.sendSelectedToIPython",
        "when": "editorTextFocus && !findInputFocussed && !python.datascience.ownsSelection && !replaceInputFocussed && editorLangId == 'python'"
    },
    {
        "key": "shift+enter",
        "command": "-python.execSelectionInTerminal",
        "when": "editorTextFocus && !findInputFocussed && !python.datascience.ownsSelection && !replaceInputFocussed && editorLangId == 'python'"
    }
Run Code Online (Sandbox Code Playgroud)


Ahm*_*sih 6

我从Shift-Enter 生成的标准 Python REPL内部启动 IPython

import IPython
IPython.embed()
Run Code Online (Sandbox Code Playgroud)

请参阅IPython 文档

  • 我使用 Ctrl+D 关闭由 Shift+Enter 生成的普通 Python REPL,然后简单地从终端窗口中的命令行启动 IPython REPL(我正在将 WSL 与 VS Code 一起使用),这为我提供了颜色。从编辑器发送的代码在这里进行解释。 (2认同)