Ipython:在笔记本中调试代码

18
我在亚马逊EWS EC2上安装了免费的epd 7.3.2,并将ipython notebook配置为公共笔记本服务器。
我以以下方式运行服务器:
nohup ipython notebook --profile=nbserver %

一切工作正常,我可以使用密码和代码在https上登录。

现在我想使用pdb/ipdb来在笔记本内部调试python函数,但是在互联网上我找不到设置调试器的步骤。

有人能帮帮我吗?

谢谢!

Massimo

这些是已安装的软件包:

root@domU-xx-xx-xx-xx-xx-xx:/opt/epdFree7.3.2/bin# ./pip freeze
EPD==7.3
Examples==7.3
Jinja2==2.6
MKL==10.3
PIL==1.1.7
Pygments==1.4
PythonDoc==2.7.3
appinst==2.1.2
apptools==4.1.0
casuarius==1.0
chaco==4.2.0
cloud==2.4.6
configobj==4.7.2
distribute==0.6.26
enable==4.2.0
enaml==0.2.0
enstaller==4.5.6
etsproxy==0.1.1
freetype==2.4.4
idle==2.7.3
ipdb==0.7
ipython==0.13.1
kernmagic==0.1.0
matplotlib==1.1.0
nose==1.1.2
numpy==1.6.1
ply==3.4
pyaudio==0.2.4
pyface==4.2.0
pyglet==1.1.4
python-dateutil==1.5
pytz==2011n
pyzmq==2.1.11
scipy==0.10.1
tornado==2.2
traits==4.2.0
traitsui==4.2.0
wsgiref==0.1.2
wxPython==2.8.10.1

root@domU-xx-xx-xx-xx-xx-xx:/opt/epdFree7.3.2/bin# ./enpkg -l
prefix: /opt/epdFree7.3.2
Name                 Version              Store
============================================================
appinst              2.1.2-1              -
apptools             4.1.0-1              -
casuarius            1.0-1                -
chaco                4.2.0-1              -
cloud                2.4.6-1              -
configobj            4.7.2-2              -
distribute           0.6.26-1             -
enable               4.2.0-1              -
enaml                0.2.0-1              -
enstaller            4.5.6-1              api rh5-64
EPD                  7.3-0                -
etsproxy             0.1.1-1              -
Examples             7.3-0                -
freetype             2.4.4-1              -
idle                 2.7.3-1              -
ipython              0.13.1-2             api rh5-64
Jinja2               2.6-2                -
kernmagic            0.1.0-1              -
matplotlib           1.1.0-1              -
MKL                  10.3-1               api rh5-64
nose                 1.1.2-1              -
numpy                1.6.1-3              api rh5-64
PIL                  1.1.7-3              -
ply                  3.4-1                -
pyaudio              0.2.4-1              -
pyface               4.2.0-1              -
pyglet               1.1.4-2              -
Pygments             1.4-1                -
python_dateutil      1.5-2                -
PythonDoc            2.7.3-1              -
pytz                 2011n-1              -
pyzmq                2.1.11-1             -
scipy                0.10.1-0             -
tornado              2.2-1                -
traits               4.2.0-1              -
traitsui             4.2.0-1              -

相关:https://dev59.com/tFwY5IYBdhLWcg3wno4r - Denilson Sá Maia
3个回答

26

为了让人们不必阅读所有答案来弄清楚这一点,我只是在扩展@Ken Arnold的观点。 从版本1.0开始,在IPython笔记本中,调试确实可以使用

只需使用%debug启动单元格,然后您就可以使用ipdb的典型控件(例如(n)extstep等)。


8

抱歉,调试器还未集成到笔记本中,但是您可以使用其他前端连接到内核并在那里运行调试器。如果您已经设置了X转发,则最简单的方式是运行%qtconsole (请参见http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html#workflow-and-limitations)。您也可以运行%connect_info,然后使用它给您的信息来运行连接到同一内核的ipython console(即普通的终端模式)。


12
从1.0版本开始,%debug现在可以使用了!(http://ipython.org/ipython-doc/stable/whatsnew/version1.0.html#notebook)请注意,在调试器处于激活状态时,您将无法评估任何其他单元格,就像任何其他长时间运行的执行一样。 - Ken Arnold

5

这是不可能的!

我找到了以下内容:

“非常重要的一点是,在笔记本中,%debug 魔法命令无法使用!我们打算解决这个限制,但在此期间,有一种方法可以在笔记本中调试问题:您可以将 Qt 控制台附加到现有的笔记本内核,并从 Qt 控制台运行 %debug。”

来源:Ipython Doc

现在问题是:

  • 远程 ipython notebook --profile=nbserver 正在 EWS EC2 美国上运行
  • 本地 ipython qtconsole 正在我的电脑上运行

远程 EWS EC2 上的 JSON 连接文件为:

{
  "stdin_port": 55986,
  "ip": "127.0.0.1",
  "hb_port": 55385,
  "key": "984e86e7-4d88-4d74-8912-cbe46bc316c0",
  "shell_port": 49024,
  "iopub_port": 33440
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接