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.
Dan Benjamin of Hivelogic provides the benefits of and instructions for installing Mercurial from source in his article Installing Mercurial on Snow Leopard.
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.
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.
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With