使用pycharm进行交互式shell调试


74

我是PyCharm的新手。我使用IDLE已有很长时间了。

在IDLE中执行脚本后使用Python对象非常方便。使用PyCharm与交互式python shell执行脚本对象后,是否可以使用脚本对象?

例如,我们有一个“测试”项目,其中有一个文件“ test.py”:

a = '123'
print a

执行后,我们可以获得结果:

123
Process finished with exit code 0

如何在交互式shell中使用字符串“ a”?


Answers:


115

内置python shell用于当前调试会话

  1. 在代码的目标行上设置一个断点(即,通过单击装订线),然后启动调试(在编辑器中右键单击,然后选择Debug myfile.py ...)。
  2. 到达断点后,找到“调试” >“控制台”选项卡,然后单击“显示命令行”图标(请参见屏幕截图)。

这将启用python shell(注意>>>屏幕截图上的绿色),您可以在其中访问当前作用域中的所有变量,并执行在Python shell中通常执行的所有操作。

在最新的pycharm版本中,您将获得完整的ipython解释器,而不是普通的python shell(如果已安装ipython)。

为调试的应用启用Python Shell

评估表达窗口

作为一种更舒适的选择,如果只需要检查作用域中对象上的某些变量,访问成员或调用方法,则一旦达到断点,请在当前作用域中选择一个表达式,右键单击->评估表达式(或使用下的菜单中显示的快捷键RunEvaluate Expression...),根据需要编辑-你可以输入任何的Python表达式,可用自动完成-然后按Enter键(或单击评估)检查结果。

支持多行和多行表达式:要获取“检查”对话框的多行版本,请单击“代码片段”模式或在编辑器中选择多行代码,然后评估表达式。您可以将值分配给现有变量(无法定义新变量),然后运行整个代码块。 检查当前范围内的变量

鼠标悬停在变量上

要在调试模式下达到断点后查看变量的值,请将鼠标指针悬停在变量上(1-2秒),该值将显示在工具提示中。

在此处输入图片说明

提示中将包含一个图标,单击该图标将在弹出窗口中打开检查器。

在此处输入图片说明

对于作用域中的变量,检查器显示在底部面板的“调试” >“调试器”下

对于pandas数据框,您将在变量检查器面板或悬停弹出窗口中看到“作为数据框查看”链接-单击该链接将在“数据视图”面板中将数据框显示为表格

更新资料

在最新的Pycharm版本(2019+)中,解释器图标现在看起来有所不同:

pycharm解释器图标

同样在unittest / pytest调试用户界面中,图标也首先放置在图标栏中。


“显示命令行”是一个功能,您甚至可以绑定到键盘快捷键。
Hartmut P. 2014年

2
可以使用Alt-Left或Alt-Right
Hartmut P

嗯,是的,这完全是答案
bellkev 2014年

20

我发现先前对Piga-fetta,Games Brainiac和kobejohn的回答很有用,但并不令人满意。所以我在这里提供第三个选择:

将选定的代码加载到控制台中(我的建议)

使用Shift+ Alt+E将所选代码或光标所在的行加载到控制台中并立即运行它。这也有一些缺点:

  • 如果需要运行整个文件,则必须选择整个文件。
  • 即使遇到错误,代码也会继续运行。

但是作为回报,我们得到了比IDLE更好的功能(我认为):能够一次运行一个选择的代码。

在这里阅读。

使用断点并评估表达式(Alt- F8(由Piga-fetta建议)

这在大型应用程序中非常有用,在大型应用程序中我们需要在代码中的某些位置进行调试,但对于交互式编码则没有太大用处。所以这不是我们想要的。

使用工具->运行Python控制台(由Games Brainiac和kobejohn建议)

这是我们想要的,但是有点麻烦,尤其是当我们要运行的模块不在项目的根目录中时。


11

您可以在PyCharm 2和PyCharm 3中简单地使用Python控制台。由于您的项目根目录已经添加到您的项目中,因此您可以简单地导入PYTHONPATH

因此,让我通过一些屏幕截图进行演示:

1.console.py在根目录下制作文件

在此处输入图片说明

2.在PyCharm中打开Python控制台

在此处输入图片说明

3.从console.py文件导入变量

在此处输入图片说明

在那里,您已经成功导入了变量。


2
你是说“瞧”吗?
华金

3
由于voilà是法语,我想补充一点,中提琴是被强奸的意思。
christophe31 2014年

@ christophe31耶克斯。抱歉,会改变。
Games Brainiac

11

执行后保持命令行打开

对于仍然存在此问题的任何人:转到“运行/调试”菜单,选择“编辑配置”,选中“显示命令行”框,这将使您能够在控制台的>>>提示符下输入参数并测试功能。

仅更改当前文件的设置

全局配置

要将更改应用于所有.py文件(此复选框仅适用于您正在处理的当前文件),请转到:编辑配置,在弹出窗口中,您会在左侧看到菜单树,选择默认值。 ,然后是Python,然后选中“显示命令行”框,这将在您打开.py文件时将其设置为默认设置(默认情况下,此功能实际上应该处于启用状态!)

更改所有Python文件的设置


1
Show command line afterwards现在而不是选择Run with Python console
rovyko

6

我找到了最佳答案: 执行后与程序进行交互

引用以下答案:

++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++

从python --help的输出中:

-i:运行脚本后进行交互检查;即使stdin似乎不是终端,也强制进行提示;也PYTHONINSPECT = x

要在PyCharm中设置解释器选项,请转到“运行” |“编辑配置”

++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++

我尝试了它,并且可以正常工作-只需将“ -i”(不带引号)用作“解释器选项”即可。请注意,如果仅在“运行/调试配置”中更改“默认值”,则对于之前已运行的脚本可能不会立即生效;您将需要一个一个地编辑这些脚本的配置。


至少在4.5.4中,PyCharm在“运行/调试配置”对话框中提供了“之后显示命令行”选项,我发现它比-i选项要好得多(向上箭头显示最后一个命令的效果)
jan-glx

4

上面没有提到:

如果要执行过程中使用变量,例如设置断点,然后尝试在当前范围内的对象上调用函数,PyCharm会弹出弹出窗口“评估表达式(Alt-F8) ”。

在此窗口中,您可以调用函数并查看输出。代码完成也可以。该窗口还具有“代码片段模式”,我正在研究它的含义-您可以在此处定义临时功能吗?

(我正在使用PyCharm 3.0.1社区版)


2

*更新

从您的更新中,我认为这个SO问题至少提供了一个完美的答案

让我在这里写下比我链接的答案更多的步骤。

  • 工具->运行Python控制台
  • 导入脚本import myscript(不带.py)(如果您想使用短名称,请使用import myscript as m
  • main()如果有障碍物,您可能需要运行if __name__ == '__main__'
  • 如您的问题,a可以在myscript.a
  • 如果您愿意,请再次使用 myscript = reload(myscript)

*原版的

在PyCharm 3.0中,您可以执行以下操作:

  • 工具->运行Python控制台
  • 工具->打开终端(您可以从中启动python或执行任何操作)

那是您要找的东西吗?如果没有,请尝试一下,让我知道这与您想要的有什么不同。


谢谢您的回答。这不是我想要的。问题已更新
user1941407

0

另一个选择是简单地使用Spyder用于“交互”运行脚本的相同命令:

>>> runfile('myscript.py')

然后,您可以打开交互式控制台的变量资源管理器,并通过再次运行以上命令来重新运行脚本。与Spyder工作流程非常相似。上面所有其他方法将为您提供交互式控制台提示,但没有打开变量资源管理器的选项,因此,如果您正在寻找这种功能,请尝试上面的方法。


0

除了我对Ramkins答案的建议外,还可以通过在控制台中右键单击并选择,直接在控制台上运行该文件Run File in Console

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.