Installing ipython with readline on the mac

I am using ipython on Mac OS 10.5 with python 2.5.1 (I would actually like to use ipython for 2.6.1, but it doesn’t seem to be available?)

I installed ipython via easy_install. It works but is missing gnu readline (needed for nice searching of command line history with ctrl-R, etc.)

I found a blog post and other sources saying this could be fixed by

sudo easy_install -f http://ipython.scipy.org/dist/ readline

However, this leads to build errors in readline.c , particularly undeclared functions like rl_compentry_func_t and rl_catch_signals.

Has anyone seen these errors? Is there another way to get ipython installed with readline?

7 thoughts on “Installing ipython with readline on the mac

  1. user

    You can install everything you need with essentially one command using MacPorts. First download and install MacPorts from http://www.macports.org/.

    Then just do the following in the terminal:
    1) sudo port -v selfupdate
    2) sudo port -v install py26-ipython

    That will install python2.6, ipython for python 2.6 and readline for you. The command to start ipython will be located at /opt/local/bin/ipython2.6

    Reply
  2. user

    “I would actually like to use ipython for 2.6.1”

    It is available. I’m using it with 2.6.1 on os x. You just need to install the official python 2.6.1 distribution, then install ipython with easy_install.

    Reply
  3. user

    To install ipython on Snow Leopard or Lion without using MacPorts, you can simply do:

    sudo easy_install readline ipython
    

    (Note that if you use the “pip” to install readline, then ipython won’t see the readline library, not sure why).

    Edit:

    If you had ipython installed remove it with

    sudo pip uninstall ipython
    

    or

    pip uninstall ipython #for virtualenvs
    

    Then make sure you have installed readline first and reinstall iptyhon

    pip install readline ipython
    

    For some reasons, if readline wasn’t present during the installation, it will install itself without support for readline or it use the default mac readline.

    Reply
  4. user

    An alternative if you don’t want to use ports. Caution: This is not upgrade safe.

    Install ipython and readline as normal:

    sudo easy_install -f http://ipython.scipy.org/dist/ readline ipython
    

    Find the full path to your readline egg. For python 2.6 this will probably be:

    /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/readline-2.5.1-py2.6-macosx-10.3-fat.egg
    

    Edit ipython with your favourite text editor:

    vim `which ipython`
    

    Before the final line in the file sys.exit, insert:

    sys.path.insert(0,'PATH_TO_READLINE_EGG')
    

    Save and exit (:wq).

    Check readline is working correct:

    ipython
    
    Reply
  5. user

    this worked for me (I’m using python 2.7, for other versions you’ll need to edit):

    cd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload
    sudo mv readline.so readline.so.bak
    

    install readline however you want (pip, homebrew, macports, etc)

    pip install -U readline
    

    Success! and it works with virtualenv, and virtualenvwrapper, and no need to modify ipython 🙂

    Reply
  6. user

    The only working way on MacOS Mavericks is to:

    1. switch to your virtualenv workon myproject_name
    2. delete readline and ipython (if you installed it before) pip uninstall readline ipython
    3. install readline only via easy_install (pip – no work!) easy_install readline
    4. finally install ipython with pip pip install ipython

    It’s work well on my MacOS and tested a long time.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *