Skip to main content

IPython on Mac OS X 10.5 Leopard

Some interesting things have happened recently that have caused me to spend way too much time writing Python code:

  • Google App Engine was release with native support for pure Python web applications. It's now really easy to write and deploy Python applications that are extremely scalable on top of a solid (and portable)  infrastructure.
  • Apple released Mac OS X 10.5 Leopard, and included support for Python as a first-class citizen in its Xcode development tool (which lets you develop with Xcode/Interface Builder pretty seamlessly), in its ScriptingBridge (which allows you to access AppleScript enabled applications using the goodness of Python, and not the confusingness of AppleScript), and allowing for very easy interaction with Cocoa objects (Apple's GUI programming framework).

The net result of all this is that I've been spending a lot of time in Python. Surprised the hell out of me, but it's the truth.

I have found the IPython command-shell particularly useful. It's very well done, and has excellent documentation. Problem is, it doesn't work so well on Mac OS X 10.5 Leopard. Your screen gets scrogged because of a Readline conflict (see the video). Here's my cookbook for getting it to work - it's way easier than all the other documents on the Internet lead you to believe.

  1. Installing IPython on Mac OS X is actually quite easy with the following command:
    sudo easy_install ipython
  2. Execute the command to load the right Readline library:
    sudo easy_install -f http://ipython.scipy.org/dist/ readline

That's it. Let me know if that didn't work for you.

Now, if you could only get Apple to include Python support in the iPhone SDK...

Comments

  1. Worked for me, thanks!

    ReplyDelete
  2. Worked for me too... Thanks for posting this

    ReplyDelete
  3. Where do I type "sudo etc"

    in to IDLE ?

    If so it just tells me invalid syntax.

    Thanks

    ReplyDelete
  4. Thank you for the commands!!
    Greetings from Mexico!

    ReplyDelete
  5. Worked like a charm, you da man! Thanks!

    ReplyDelete
  6. Well, it almost works for me. Problem is that the "u" key doesn't function; when I press it within ipython, nothing happens. The capital "U" key does work. If I start ipython with "ipython -noreadline" the "u" key works again but, of course, I lose tab completion. Sigh.

    Any ideas what the problem is here?

    Thanks in advance,
    Gary

    ReplyDelete
  7. Cool. ipython rules. However, the readline part failed for me because apparently I don't have gcc or make?

    ReplyDelete
  8. ^ install xcode/dev tools

    ReplyDelete
  9. worked. excellent. thank you.

    ReplyDelete
  10. Didn't work for me.

    In the beginning of the build, all goes well:

    Best match: readline 2.5.1
    Downloading http://ipython.scipy.org/dist/readline-2.5.1.tar.gz
    Processing readline-2.5.1.tar.gz
    Running readline-2.5.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ecniWD/readline-2.5.1/egg-dist-tmp-hEgh0g

    ============ Building the readline library ============

    readline-5.2/
    (...)
    Beginning configuration for readline-5.2 for i386-apple-darwin9.5.0
    (...)

    But in the "Building the readline extension module" phase it gives many warnings and errors. The complete output here:
    http://alexsm.googlepages.com/readline-build.txt

    ReplyDelete
  11. for non system wide install:
    mkdir -p ~/.python/lib/python2.5/site-packages
    echo "PYTHONPATH=$HOME/.python/lib/python2.5/site-packages" >> ~/.bash_profile
    echo "export PYTHONPATH" >> ~/.bash_profile

    log out and login from the shell
    than run

    easy_install --prefix $HOME/.python http://ipython.scipy.org/dist/ipython-0.9.1-py2.5.egg
    easy_install --prefix $HOME/.python -f http://ipython.scipy.org/dist/ readline

    ReplyDelete
  12. Got the same errors as Alex and Tony when installing the readline module.

    ReplyDelete
  13. Zogzog all,
    I was having the same problem with:
    WARNING: Readline services not available on this platform.
    WARNING: The auto-indent feature requires the readline library

    I made sure that readline was installed with:
    sudo easy_install -f http://ipython.scipy.org/dist/ readline

    and it didn't work.
    Then I checked in /Library/Python/site-package/
    and I saw a pyreadline*.egg that I removed (cf. http://lists.ipython.scipy.org/pipermail/ipython-user/2008-May/005402.html)

    Then ipython was happy again.

    I hope that helps.
    Seb

    ReplyDelete
  14. [...] IPython, found here. Note the following important safety tip, found at IPython on Mac OS X 10.5 Leopard at Brian Berliner’s Brain : I have found the IPython command-shell particularly useful. It’s very well done, and has [...]

    ReplyDelete
  15. How do I get easy_install to work? I've tried downloading setuptools but cannot get the script to run. All the information I have found on it is pretty vague, and I'm not very familiar with Python. I am trying to get iPython, but first I need to succesfully run easy_install. Any ideas?

    ReplyDelete
  16. I had the same problem as Alex, lots of gcc errors and exits with "command 'gcc' failed with exit status 1".

    Using Leopard, on a brand new mpb with dev tools / xcode installed.

    what am I doing wrong?

    ReplyDelete
  17. Running the command didn't solve the problem but I found that I had some other readline files, including one in lib-dynload. So I deleted all those and ran the command again.

    It worked, thanks!

    ReplyDelete
  18. It didn't work for me, the readline module doesn't compile - I believe I have all of the dependencies. I'm running Mac OS X 10.5.6, Python 2.6 installed via darwin ports.

    Here's the error message from easy_install:

    http://pastebin.com/fe2d63b5

    ReplyDelete
  19. I got the exact same warnings and errors that Alex got.

    I'm running Leopard 10.5.6.

    Any thoughts, Brian?

    ReplyDelete
  20. I get exactly the same error as Alex (GCC failure), however I have macports installed and:

    sudo port install readline-5

    makes everything work fine for me.

    ReplyDelete
  21. Didn't work for me either, exactly the same problem as Alex.
    The solution here seems to work for me though:
    http://hurley.wordpress.com/
    Basically just copy the egg directory by hand to /Library/Python/2.5/site-packages
    and edit /Library/Python/2.5/site-packages/easy-install.pth

    ReplyDelete
  22. Question:

    I have a MacBook with 10.5.6 and I followed all the steps but I cannot get any tab-completion or emacs-like key strokes to work with ipython. The commands and shortcuts work fine with the terminal, but stop working after ipython is loaded. Help?

    M

    ReplyDelete
  23. Many thanks to SebZeFrog, I removed pyreadline and it worked like magic !!

    ReplyDelete
  24. Thanks I was looking for that help! It did the job :)

    ReplyDelete
  25. yeo man...big ups...thanx for the install command...so easy...

    ReplyDelete
  26. Thanks Gilles!!
    I had readline install problem.
    It worked for me in Snow Leopard.

    ReplyDelete
  27. Found this page on a Google search because I had the readline problem-- deleting the egg as mentioned above helped. Thank you!

    ReplyDelete

Post a Comment

Popular posts from this blog

Kernel-based Virtual Machine hits Linux

Many congratulations to my good friend Moshe Bar and his team over at (stealth-mode startup) Qumranet . Techworld reports that the KVM (Kernel-based Virtual Machine) project has been accepted into the 2.6.20 version of the Linux kernel distribution. KVM is an Open Source kernel driver that basically allows a Linux kernel to host virtual machines, as plain old Linux processes, that can run Linux or Windows (or other x86-based operating systems). It runs only on hardware that support Intel's VT instruction set (which is fine) and will soon support the AMD-V instruction set as well. This is cool for a number of reasons. It's Open Source, released under the GPL. It basically turns the Linux that we all know and love into a "hypervisor". Linux-as-hypervisor makes sense because Linux already knows how to manage devices, memory, processes, multi-cores, etc. VMware ESX is, essentially, a "hypervisor" - a small kernel, built on Linux as it turns out, that

Bill Coleman Joins 3tera Advisory Board

I think this move surprised a number of people, since Bill recently wrapped up Cassatt Corproation, getting the technology and people  acquired by Computer Associates . However, I was not surprised at all. The announcement, via  3tera Welcomes Bill Coleman : You may or may not have seen the recent press realease.  Bill Coleman, IT/Silicon Valley luminary, Founder and CEO of BEA Systems, has joined 3Tera’s Advisory Board. Yes, this alone is a great testimonial to what we have accomplished in our field.  Getting dignitaries such as Bill does not come easy.  But here’s the best part - this has a lot more than just marquee value and I doubt that Bill would have joined us if that was the case.  Bill, especially since his most recent stint as Founder and CEO of Cassatt Systems, is an extremely knowledgeable visionary in the area of utility and Cloud Computing; and, data center automation. So, Bill will be extremely valuable, reviewing and tweaking both our business plans and techno

Big In Japan Open Sources Their Ruby On Rails Tools

The kind folks over at Big In Japan have graciously decided to Open Source the code they used to build their demo web sites . It's all Ruby on Rails code, and it's being released with a GPL license. The code trees being made available include: elfURL ~ URL Shortner FeedVault ~ OPML file storage FrankenFeed ~ RSS feed merger InstantFeed ~ RSS feeds via email QwikPing ~ Ping Server SocialMail ~ RSS via email Very cool. I just love the Open Source community . I have actually been writing some code of late, and it's great to have some reference code to check out. Not sure if I'm going to go with Ruby on Rails yet, however. And, for the record. I have no idea if this is big in Japan. Tags: Open Source , GPL , Ruby On Rails , Big In Japan , Brian Berliner , brianberliner