Ipython:调试Notebook内部的代码

时间:2013-02-28 10:17:10

标签: ipython-notebook

我在亚马逊EWS EC2上免费安装了epd 7.3.2,并将ipython笔记本硬件配置为公共笔记本电脑服务器。

我以这种方式运行服务器:

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              -

3 个答案:

答案 0 :(得分:26)

只是扩大@Ken Arnold的观点,这样人们就不必阅读所有答案来解决这个问题。 从版本1.0开始,在ipython笔记本中调试 DOES WORK

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

答案 1 :(得分:8)

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

答案 2 :(得分:5)

这不可能!

我发现了这个:

“非常重要的是,这意味着%debug magic在笔记本中不起作用!我们打算纠正这个限制,但与此同时,有一种方法可以调试笔记本中的问题:你可以附加一个Qt控制台到你现有的笔记本内核,并从Qt控制台运行%debug。“

on Ipython Doc

现在重点是:

  • 远程ipython notebook --profile = nbserver正在EWS EC2上运行 USA
  • 本地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
}