2013-02-28 112 views
16

我在亚马逊EWS EC2上安装了epd 7.3.2,并且将ipython笔记本作为公共笔记本服务器进行配置。Ipython:调试笔记本内的代码

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

nohup ipython notebook --profile=nbserver % 

一切工作正常,我可以与HTTPS和代码密码登录。

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

有人可以帮助我吗?

问候

马西莫

这些是已安装的软件包:

[email protected]:/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 

[email protected]:/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    - 
+0

相关:https:// stackoverflow。com/questions/32409629 /什么是正确的方式来调试ipython笔记本 – 2016-04-13 12:58:31

回答

5

这是不可能的!

我发现这一点:

“非常重要的是,这意味着%调试魔术不会在笔记本电脑工作,我们打算纠正这种限制,但在此期间,有一种方法来调试问题!笔记本:您可以将Qt控制台附加到您现有的笔记本内核上,并从Qt控制台运行%debug。“

Ipython Doc

现在的问题是:

  • 远程IPython的笔记本--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 
} 
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)请注意,尽管调试器处于活动状态,但您将无法评估任何其他单元格,就像其他任何长单元 - 执行。 – 2013-11-07 20:21:38

26

只是扩大@Ken Arnold的观点,所以人们不必阅读所有的答案就可以搞清楚。 从版本1.0开始,在ipython笔记本中调试DOES WORK

只需用%debug开始单元格,然后就可以使用ipdb的典型控件((n)ext,step等)。

+1

添加%debug对我无效。 – user2725109 2016-06-11 04:22:11