Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing Mercurial on Mac OS X 10.6 Snow Leopard

Installing Mercurial on Mac OS X 10.6 Snow Leopard

I installed Mercurial 1.3.1 on Mac OS X 10.6 Snow Leopard from source using the following:

cd ~/src
curl -O https://www.mercurial-scm.org/release/mercurial-1.3.1.tar.gz
tar -xzvf mercurial-1.3.1.tar.gz
cd mercurial-1.3.1
make all
sudo make install

This installs the site-packages files for Mercurial in /usr/local/lib/python2.6/site-packages/. I know that installing Mercurial from the Mac Disk Image will install the files into /Library/Python/2.6/site-packages/, which is the site-packages directory for the Mac OS X default Python install.

I have Python 2.6.2+ installed as a Framework with its site-packages directory in:

/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages

With Mercurial installed this way, I have to issue:

PYTHONPATH=/usr/local/lib/python2.6/site-packages:"${PYTHONPATH}"

in order to get Mercurial to work.

Questions

  • How can I install Mercurial from source with the site-packages in a different directory?
  • Is there an advantage or disadvantage to having the site-packages in the current location? Would it be better in one of the Python site-package directories that already exist?
  • Do I need to be concerned about virtualenv working correctly since I have modified PYTHONPATH (or any other conflicts for that matter)?

Reasons for Installing from Source

Dan Benjamin of Hivelogic provides the benefits of and instructions for installing Mercurial from source in his article Installing Mercurial on Snow Leopard.

like image 517
Matthew Rankin Avatar asked Sep 22 '09 17:09

Matthew Rankin


3 Answers

Why need to use macports? python easy_install is the easiest way and error free:

easy_install -U mercurial

It's just a simple gold bullet, all the time.

like image 167
William Yeung Avatar answered Nov 18 '22 21:11

William Yeung


Especially since you have Python 2.6 available you can do something like python setup.py install --user, which will install Mercurial with ~/.local as prefix. You don't have to change the PYTHONPATH for this but only add ~/.local/bin to your PATH.

Regarding advantages and disadvantages: That all depends on what your PYTHONPATH in general looks like since modifying it will naturally modify the load order of packages (which becomes relevant if you have one version of Mercurial installed with one prefix and another with a different prefix). In general, I try to put all custom packages into a certain site-packages folder (say /usr/local/lib/python2.6/site-packages). Again: If you are the only person who will use those libs, the --user flag provided by Python 2.6's distutils makes something like this pretty easy (with adding ~/.local to the default search path for modules).

virtualenv should work just fine as long you your PYTHONPATH is used consistently.

like image 8
Horst Gutmann Avatar answered Nov 18 '22 22:11

Horst Gutmann


Install mercurial - or any Python package in general - into your user home directory. Thus you can access them from any Python (of same version) or any virtualenv. See PEP 370 for details.

$ cd mercurial-x.y.z/
$ python2.6 setup.py install --user
$ ~/.local/bin/hg
...

But why do you want to build mercurial manually? I use macports.

$ sudo port install mercurial
$ which hg
/opt/local/bin/hg

Update: Nowadays, I simply use PyPM to install mercurial into ~/.local/bin/hg.

like image 8
Sridhar Ratnakumar Avatar answered Nov 18 '22 20:11

Sridhar Ratnakumar