【问题标题】:Visual studio code interactive python consoleVisual Studio 代码交互式 python 控制台
【发布时间】:2017-02-11 05:30:02
【问题描述】:

我正在使用带有 DonJayamanne python 扩展的 Visual Studio 代码。它工作正常,但我希望有一个交互式会话,就像 Matlab 中的会话一样,在代码执行后,每个定义和计算结果都保留在控制台中并可访问。

例如运行这段代码后:

a = 1

python 会话已终止,我无法在控制台中输入以下内容:

b = a + 1
print(b)

我知道 python 会话可以通过“-i”标志保持活动状态。但这根本行不通。

此外,每次我运行代码文件时,都会产生一个新的 python 进程。有没有办法在一个控制台中连续运行?还是像 Matlab?

这对我来说听起来非常重要和微不足道。我是否在这里遗漏了一些我无法找到解决方案的大问题?

【问题讨论】:

    标签: python ipython visual-studio-code


    【解决方案1】:

    我是扩展程序的作者。 有两种选择:

    1. 使用集成终端窗口(我猜你已经知道了)
      启动终端窗口并输入python
      在 REPL 中执行的每条语句都在同一个会话中。

    2. 下一个版本将增加对 Jupyter 的支持。
      请在此处查看一些尚未发布的示例:

    【讨论】:

    • 很好,但这不是我想要的。如果我从 ide 中运行 python 文件,它会在不同的终端中运行。我不想手动打开终端并每次都使用长命令加载相同的文件。理想情况下,应该在当前运行的 ipython 会话中运行相同的 ipython 会话命令:runfile($file, wdir=$dir) 并且不会产生新的 ipython(或 python)
    • 如果这是您想要的,您可能必须等待下一个版本使用选项 2(这每次都使用相同的 ipython 会话)。并且稍后会添加在同一终端中运行文件的可能性(目前这是不可能的,因为我们无法确定用户是否关闭了终端),我相信在 VS Code 版本中会提供一个 API .
    • 使用“在终端中运行文件”或“在终端中运行选择/行”(使用 F5 和 F9 键实现类似 Matlab 的行为)提示集成终端(默认称为“Python”) @Don 的扩展名。我通常从这里开始,退出(ctrl+D),(然后source activate .. 一些conda env,如果需要)然后从这里启动ipython。最后,唯一要更改的是添加您的工作区设置,例如“python.pythonPath”:“运行”,这只是为了能够使用 F5 在 ipython 中运行整个文件(终端命令中的运行文件...)。通过对 launch.json 的一些调整,我相信它可能会更好。
    • @H.Rev.我尝试了将这一行“python.pythonPath”:“run”添加到vscode中的用户设置的解决方案。终端命令中的运行文件仍然使用常规 python 运行,并且不会将其发送到打开的 ipython 终端。有什么我想念的吗?
    • 你的 ipython 终端被标记为“Python”?如果它仍然是“bash”,它确实不会将它发送到那里......如果在它发送到常规 python 终端之后你退出() python 并从同一个控制台启动 ipython,然后按 F5,会发生什么? (顺便说一句,如果你有 python.pythonPath: 运行,那么它应该尝试执行“run filename.py”,这是 python 会给出一个语法错误,是你得到的吗?)还要确保你的设置没有被本地覆盖工作区设置。
    【解决方案2】:

    我在用户设置文件中添加了以下几行,然后它就可以工作了。 选择几行python代码,然后右键选择Run selected code in python terminal

    解决方案 1: 将启动 iPython 终端

       "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
       "terminal.integrated.shellArgs.windows": ["/K ipython"],
    

    解决方案 2: 会启动一个类似“python -i”的终端

       "python.terminal.launchArgs": ["-i"],
    

    【讨论】:

    • 知道如何为 python 调试执行此操作,我没有为 launch.json 找到任何东西
    【解决方案3】:

    以下行将解决您的问题。

     "python.terminal.launchArgs": ["-c","\"from IPython import embed; embed()\""]
    

    【讨论】:

    • 这可行,但替换了普通的终端/shell,这会破坏其他一些东西
    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2019-09-10
    • 2012-06-24
    • 2018-03-06
    相关资源
    最近更新 更多