Using IPython console along side IPython notebook

2019-03-08 11:24发布

问题:

While working on an IPython notebook, I'm increasingly finding myself wishing that the notebook would have a console attached to it, for interactive programming. I find myself adding lines to test snippets of code and then deleting them and that's the good usage. In the worse usage I'm changing the commands in the same line, evaluating the line over and over, changing entirely the purpose of the line until I get it right, and then I'm Ctrl-Zing all the way back to the original cell content.

If I could have an interactive interpreter at the bottom of the notebook, that would definitely increase my productivity. I know that a notebook has a kernel, but I wasn't able to attach a new ipython console to it. So my wonders are:

  1. Is there a more efficient way to work with the notebook?
  2. Assuming there isn't, how can I attach an ipython console to a notebook kernel?

Thanks!

回答1:

Just do %qtconsole in one cell, and it will start a qtconsole attached to the same kernel. Of course your kernel need to be local.

you can of course use the long method :

In [1]: %connect_info
{
  "stdin_port": 50845, 
  "ip": "127.0.0.1", 
  "control_port": 50846, 
  "hb_port": 50847, 
  "signature_scheme": "hmac-sha256", 
  "key": "c68e7f64-f764-4417-ba3c-613a5bf99095", 
  "shell_port": 50843, 
  "transport": "tcp", 
  "iopub_port": 50844
}

Paste the above JSON into a file, and connect with:
    $> ipython <app> --existing <file>
or, if you are local, you can connect with just:
    $> ipython <app> --existing kernel-45781.json 
or even just:
    $> ipython <app> --existing 
if this is the most recent IPython session you have started.

then

 ipython qtconsole --existing kernel-45781.json


回答2:

When you start the ipython notebook in the terminal, it will output something like this:

 2015-03-26 13:05:52.772 [NotebookApp] Kernel started: 4604c4c3-523b-4373-bfdd-222eb1260156

Then start the ipython console like this:

ipython console --existing 4604c4c3

I find this easier than the other solution.