无法正确安装mercurial – PYTHONPATH错误

我有一台运行在Ubuntu 10.04上的服务器,我想通过它来安装Mercurial

% sudo apt-get install mercurial 

它似乎已经成功安装,不会显示任何错误消息。 但是当我尝试它时,我得到:

 % hg abort: couldn't find mercurial libraries in [/usr/bin /usr/lib/python2.6 /usr/lib/python2.6/plat-linux2 /usr/lib/python2.6/lib-tk /usr/lib/python2.6/lib-old /usr/lib/python2.6/lib-dynload /usr/lib/python2.6/dist-packages /usr/lib/pymodules/python2.6 /usr/local/lib/python2.6/dist-packages] (check your install and PYTHONPATH) 

我已经search了一段时间,发现一些网站有同样的问题,但我仍然不知道如何解决这个问题,因为它没有真正说明我需要寻找什么,或者我需要添加到我的PYTHONPATH中。

顺便说一句,现在我的PYTHONPATH似乎是空的:

 % echo $PYTHONPATH % 

这是我得到,如果我看着我的/ usr / lib /目录中的mercurial:

 % find /usr/lib/py* -name 'mercurial*' /usr/lib/pymodules/python2.6/mercurial /usr/lib/pymodules/python2.6/mercurial-1.4.3.egg-info /usr/lib/pyshared/python2.6/mercurial 

有人可以帮我吗? 我应该如何设置我的PYTHONPATH? 我已经尝试重新安装,使用“easy_install mercurial”或“aptitude重新安装mercurial”安装,但没有任何帮助。 我总是得到这个相同的错误。

如果有人能帮助,那将是非常好的…谢谢!

加成:

从头开始build立工作并不好…当我以root身份login时,我可以使用hg,但是当我用普通用户访问时,我得到:

 % hg Traceback (most recent call last): File "/usr/local/bin/hg", line 4, in <module> import pkg_resources File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2659, in <module> parse_requirements(__requires__), Environment() File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 546, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: mercurial==1.7.2 

我不确定这个的确切原因,但是我通过从源码安装Mercurial解决了类似的问题(尽pipe你可能首先删除任何Mercurial包)。

在这里下载Mercurial tarball并解压:

  tar tvf mercurial-1.7.5.tar.gz cd mercurial-1.7.5 python setup.py install 

…这应该做到这一点。 如果您安装了多个版本的Python(2.5,2.6,2.7),请使用最新的版本。

像我这样的事情发生在OS X上,当我把系统Python优先于我用Homebrew安装的python版本时。 我应该把自制软件的版本预先添加到PATH中,而不是添加到PATH中。 更多信息在https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python

所以在.bash_profile或类似的rc文件中,我改变了顺序

 PATH=/usr/local/share/python:"${PATH}" PATH=/usr/local/bin:"${PATH}" 

 PATH=/usr/local/bin:"${PATH}" PATH=/usr/local/share/python:"${PATH}" 

然后Mercurial停止抛出这个错误。

(我希望现在已经解决了这个问题,但是我会尽量提供一些关于如何findMercurial的build议。)

首先:如果遇到这种问题,请到IRC频道 。 这比随机的东西让它工作好得多 – 在这里安装的东西只会让你和你的系统更加困惑:-)

这听起来像你已经尝试了很多不同的东西来安装Mercurial。 要非常小心地混合不同的Mercurial安装方式(或任何其他Python程序)。 你得到的第二个错误是因为你正在启动一个版本的Mercurial(版本1.7.2),它正在寻找较旧的库。 所以你现在可能已经有了两个或更less的工作安装。

所以我的build议是删除Ubuntu软件包并删除任何其他版本的Mercurial。 search名为mercurial目录和文件并将其删除(但当然,首先要删除软件包)。

然后安装软件包 – 如果Ubuntu正常版本库中的版本太旧,那么使用Mercurial PPA 。 你得到的第一个错误意味着Mercurial找不到它的库(当你从Ubuntu软件包安装Mercurial时,这当然是奇怪的和意想不到的)。 尝试运行

 $ python -c 'import mercurial; print mercurial' 

看看你是否可以自己导入mercurial包。 如果这样做,那么你会看到包的居住地,你可以添加父目录到你的PYTHONPATH

 $ PYTHONPATH=/usr/lib/python2.7/dist-packages/ hg debuginstall 

如果这不起作用,那么searchcommands.py 。 这是Mercurial中的一个文件,该文件的祖父目录应该在你的PYTHONPATH

这会让你启动并运行…但是,当你使用软件包pipe理器安装Mercurial时,不要求你自己摆弄它。

我有完全相同的问题,这似乎是工作(可能是有什么我做了,但我现在不能回忆):

 sudo apt-get install mercurial sudo apt-get install --reinstall python-software-properties && sudo dpkg-reconfigure python-software-properties 

只需将Mercurial libpath添加到PYTHONPATH即可。

  1. find这些库: locate mercurial ,并findLib PATH。 例如/usr/lib64/python2.6/site-packages/mercurial;
  2. 将Libpath添加到PYTHONPATH: export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.6/site-packages

Libpath可能是您机器中的不同位置。 你可以永久性地将导出的句子添加到〜/ .bashrc或〜/ .zshrc。

我也得到这个错误,重新安装,删除/安装没有帮助。 事实certificate,我的系统安装了Python2.3和Python2.4。 它使用Python2.4,但是mercurial库被安装在Python2.3中。 我将mercurial库复制到Python2.4,并解决了这个问题。 以下是我用来复制这些库的命令:

cd /usr/lib64/python2.4/site-packages sudo cp -r /usr/lib64/python2.3/site-packages/mercurial。