在Mac OS X 10.6雪豹上安装Mercurial
在Mac OS X 10.6 Snow Leopard上安装Mercurial
我在Mac OS X 10.6 Snow Leopard上通过源代码安装了Mercurial 1.3.1,使用了以下命令:
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
这样安装后,Mercurial的相关文件会放在 /usr/local/lib/python2.6/site-packages/
这个地方。我知道,如果通过Mac的磁盘镜像安装Mercurial,文件会放在 /Library/Python/2.6/site-packages/
,这是Mac OS X默认的Python安装的文件夹。
我安装了Python 2.6.2+,它是作为一个框架安装的,相关文件夹在:
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
用这种方式安装Mercurial后,我需要输入以下命令:
PYTHONPATH=/usr/local/lib/python2.6/site-packages:"${PYTHONPATH}"
这样才能让Mercurial正常工作。
问题
- 我怎么才能把Mercurial从源代码安装到其他文件夹的site-packages里?
- 把文件放在现在的位置有什么好处或坏处?放在已经存在的Python site-packages文件夹里会更好么?
- 因为我修改了PYTHONPATH,我需要担心virtualenv是否能正常工作吗?(或者其他可能的冲突)
从源代码安装的理由
Dan Benjamin来自Hivelogic,在他的文章在Snow Leopard上安装Mercurial中,提供了从源代码安装Mercurial的好处和步骤。
5 个回答
在你的用户主目录里安装mercurial,或者说任何Python包,这样你就可以在任何相同版本的Python或者虚拟环境中使用它们。想了解更多,可以查看PEP 370。
$ cd mercurial-x.y.z/
$ python2.6 setup.py install --user
$ ~/.local/bin/hg
...
但是,为什么你想手动安装mercurial呢?我用的是macports。
$ sudo port install mercurial
$ which hg
/opt/local/bin/hg
更新:现在我直接用PyPM把mercurial安装到~/.local/bin/hg
里。
为什么需要使用macports呢?因为用python的 easy_install
是最简单的方法,而且没有错误:
easy_install -U mercurial
这简直就是个简单的金钥匙,随时都能用。
特别是如果你有 Python 2.6 的话,你可以用 python setup.py install --user
这个命令来安装 Mercurial,这样它会把文件放在 ~/.local 这个地方。你不需要去改 PYTHONPATH,只需要把 ~/.local/bin 加到你的 PATH 里就可以了。
关于优缺点,这主要取决于你的 PYTHONPATH 是什么样的,因为修改它会影响包的加载顺序(这在你安装了一个版本的 Mercurial 和另一个不同版本的时候就很重要了)。一般来说,我会把所有自定义的包放在一个特定的 site-packages 文件夹里(比如 /usr/local/lib/python2.6/site-packages)。再说一次:如果只有你一个人会用这些库,Python 2.6 的 distutils 提供的 --user 选项会让这件事变得很简单(它会把 ~/.local 加到模块的默认搜索路径里)。
只要你的 PYTHONPATH 使用得当,virtualenv 应该也能正常工作。