在conda环境中在Jupyter Notebook中运行pdb

问题描述 投票:0回答:1

我的一个同事最近给我寄了一些他写的.py文件以及一个从这些文件中调用函数的jupyter笔记本。该代码在conda环境中运行。当我尝试使用pdb.set_trace()调试代码时,它开始按预期运行。通过使用“ l(ist)”命令,我可以看到单元格中的其他代码(请参见下面的代码)。但是,一旦我尝试使用“ n(ext)”单步执行代码,它就会开始跟踪意外执行,而不是转到定义了变量“ data_name”的第二行。为什么会这样,我该怎么做才能让自己逐行浏览代码?

--Return--
> <ipython-input-16-a74c145a81f7>(1)<module>()->None
-> import pdb; pdb.set_trace()
(Pdb) l
  1  -> import pdb; pdb.set_trace()
  2     data_name = 'SLP-Control-Realigned2hr'
  3     fname_map = '{}.cycle{:03d}.map.lase'
  4     fname_llm = '{}.cycle{:03d}.llm.lase'
  5     
  6     ncycles = 1
  7     icycles = np.arange(ncycles)
[EOF]
(Pdb) n
> c:\users\pauld\anaconda3\envs\lase\lib\site-packages\ipython\core\interactiveshell.py(3329)run_code()
-> sys.excepthook = old_excepthook
(Pdb) l
3324                        await eval(code_obj, self.user_global_ns, self.user_ns)
3325                    else:
3326                        exec(code_obj, self.user_global_ns, self.user_ns)
3327                finally:
3328                    # Reset our crash handler in place
3329 ->                 sys.excepthook = old_excepthook
3330            except SystemExit as e:
3331                if result is not None:
3332                    result.error_in_exec = e
3333                self.showtraceback(exception_only=True)
3334                warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)```
python python-3.x jupyter-notebook conda pdb
1个回答
0
投票

我也一样。这种效果使调试器无用,因为您浏览的是环境代码,而不是您自己的代码。我不敢相信所有推荐这种方法的人都真的像这样使用它。搜索lo和hi,找不到该问题的解决方案。我还尝试了pixiedust调试器,但是该调试器存在依赖项问题。从GitHub注释中,似乎在安装程序中未正确设置依赖项,因此它不断失败,并询问已安装的其他库(如matplotlib)。最终放弃了在Jupyter中进行调试,然后回到带有控制台的旧式pdb。

© www.soinside.com 2019 - 2024. All rights reserved.