What is the most compatible way to install python modules on a Mac?
Question: I'm starting to learn python and loving it. I work on a Mac mainly as well as
Linux. I'm finding that on Linux (Ubuntu 9.04 mostly) when I install a python
module using apt-get it works fine. I can import it with no trouble.

On the Mac, I'm used to using Macports to install all the Unixy stuff.
However, I'm finding that most of the python modules I install with it are not
being seen by python. I've spent some time playing around with PATH settings
and using python_select . Nothing has really worked and at this point I'm not
really understanding, instead I'm just poking around.

I get the impression that Macports isn't universally loved for managing python
modules. I'd like to start fresh using a more "accepted" (if that's the right
word) approach.

**So, I was wondering, what is the method that Mac python developers use to
manage their modules?**

Bonus questions:

Do you use Apple's python, or some other version? Do you compile everything
from source or is there a package manger that works well (Fink?).

Any tips or suggestions here are greatly appreciated. Thanks for your time. :)


Answer: The most popular way to manage python packages (if you're not using your
system package manager) is to use setuptools and easy_install. It is probably
already installed on your system. Use it like this:

    
    
    easy_install django
    

easy_install uses the [Python Package Index](http://pypi.python.org) which is
an amazing resource for python developers. Have a look around to see what
packages are available.

A better option is [pip](http://pypi.python.org/pypi/pip), which is gaining
traction, as it attempts to [fix a lot of the
problems](http://www.b-list.org/weblog/2008/dec/14/packaging/) associated with
easy_install. Pip uses the same package repository as easy_install, it just
works better. Really the only time use need to use easy_install is for this
command:

    
    
    easy_install pip
    

After that, use:

    
    
    pip install django
    

At some point you will probably want to learn a bit about
[virtualenv](http://pypi.python.org/pypi/virtualenv). If you do a lot of
python development on projects with conflicting package requirements,
virtualenv is a godsend. It will allow you to have completely different
versions of various packages, and switch between them easily depending your
needs.

Regarding which python to use, sticking with Apple's python will give you the
least headaches, but If you need a newer version (Leopard is 2.5.1 I believe),
I would go with the
[macports](http://trac.macports.org/browser/trunk/dports/lang/python26/Portfile)
python 2.6.

