IPython:从特定行开始运行脚本

时间:2014-07-16 23:00:20

标签: ipython

我正在用IPython以交互方式编写我的脚本。这就是我目前所做的事情:

  1. 写一大堆代码,
  2. 使用"运行-i file_name.py"在ipython中运行。
  3. 进行更改并重复2,直到我认为没问题。
  4. 注释掉整个上一个块。
  5. 编写基于前一代码的新代码块。
  6. 返回第2步。
  7. ......
  8. 有更有效的方法吗?我可以在使用当前命名空间中的所有变量时从特定行启动脚本吗?

6 个答案:

答案 0 :(得分:1)

我个人也会使用ipython笔记本,但你也可以使用你最喜欢的文本编辑器,并且总是复制出你想要运行的代码块,并使用魔术命令%paste在ipython shell中运行该块。它会照顾你的缩进。

答案 1 :(得分:1)

使用%edit stuff.py(第一次使用)和%ed -p(第一次使用后)的魔力,它将从ipython内部调用$EDITOR。退出编辑器后,ipython将运行脚本(除非您调用%ed -x)。这是我发现在CLI-ipython中工作的最快方式。笔记本很不错,但我喜欢有一个真正的代码编辑器。

答案 2 :(得分:0)

IPython Notebook允许您逐行交互式运行脚本。它带有IPython,只需运行:

ipython notebook 

从终端启动它。它是IPython的Web界面,您可以通过单击设置中的“保存”将笔记本保存到*.py文件。

以下是video的更多信息。

答案 3 :(得分:0)

使用 ipdb (" pip install ipdb"在命令行上安装它)。

假设您要从第18行到第23行运行脚本" foo.py" 。 你想要这样开始:

ipdb foo.py

现在,让 j ump到第18行(即忽略18日之前的所有行):

ipdb> j 18

接下来,我们在第23行设置 b reakpoint(我们不想进一步):

ipdb> b 23

最后,让我们执行:

ipdb> c

完成工作:)

答案 4 :(得分:0)

(基于lev的回答)

来自交互式shell:

%run -i -d foo.py
然后

应进入调试器,然后继续:

j <line_number>
c

编辑:不幸的是,这似乎有点打破了ipython的魔法%调试命令。

答案 5 :(得分:0)

快速使用http://qtconsole.readthedocs.io/en/stable/

它类似于基于你的浏览器的Jupyter笔记本(正如@agonti和@ magellan88指出的那样,但可能要快得多。它还有emacs风格的键绑定。

我使用ipdb,ipython,与tmux和vim一起使用,并获得几乎类似IDE的功能,速度更快。