IPython buffer and pagination in Enthought Canopy

2019-05-27 05:33发布

问题:

I'm using Enthought's beta distribution of Python Canopy 0.9.1 on Windows 7. How do I increase the size of my IPython buffer. Also how do I pipe the output of a command through a paginator; output is currently unpaginated.

If existing answers like How to increase the ipython qtconsole scrollback buffer limit or How to use Pipe in ipython will work, I don't know how to apply them to Windows.

Thank you!

回答1:

There's currently no preference or config option to increase the buffer limit currently, but you could create a macro with the following code, and run it.

def run():
    code_task = get_active_task()
    python_pane = code_task.python_pane
    python_pane.frontend.control.buffer_size = 1000

Setting the buffer_size to a non-positive value, will turn off clipping of the buffer, but this option is "not recommended" by the IPython devs.

To create a new macro,

  1. go to Tools (Menu) > Edit Macros ...
  2. Click on the "Create a new macro" button and give the macro a suitable name.
  3. Copy the code above, into your macro
  4. Optionally, you can add a keyboard shortcut for running this macro, by clicking on the keybinding text box in the bottom right, and pressing the desired key-combination. If you choose not to set a keyboard shortcut, you can run the macro from Tools > Run Macro > (your macro)


回答2:

Let me add to Puneeth's answer that our macro framework allows you to script parts of the application itself. To create a new macro with this code,

  1. Select Tools > Edit macros... and click the "Create a new macro" button in the menu of the new macro window.

  2. Choose and a name, and in the file describing the macro, replace the run function by the one given by Puneeth.

  3. You will also need to create a shortcut combination in the bottom right panel. Click in the Keybinding text box, and type in a short cut of your choice: it will be recorded and stored there.

Save and you are good to go.

Jonathan



回答3:

Sharing my own solution... if you want to see output that is larger than the iPython buffer, and you're more interested (as I was) in looking output later anyway, you can use the session logging feature of iPython.

In []: %logstart -or filename

and later

In []: %logstop