无法正确安装 mercurial-PYTHONPATH 错误

无法正确安装 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)

我已经在 Google 上搜索了一段时间,发现一些网站也有同样的问题,但我仍然不知道如何解决它,因为它没有真正说明我需要寻找什么或需要添加到我的 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 reinstall mercurial”进行安装,但都无济于事。我总是得到同样的错误。

如果有人能帮忙就太好了...谢谢!

添加:

从头开始构建效果并不好...当我以 root 身份登录时,我可以使用 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

答案1

我不确定这个问题的具体原因,但我已经通过从源代码安装 Mercurial 解决了类似的问题(不过,您可能需要先删除所有 Mercurial 包)。

下载 Mercurial 压缩包这里并提取它:

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

...这样就可以了。如果您安装了多个版本的 Python(2.5、2.6、2.7),请使用最新版本。

答案2

当我在 OS X 中将系统 Python 的优先级设置为高于使用 Homebrew 安装的 Python 版本时,我也遇到了类似的问题。我应该将 Homebrew 版本添加到 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 停止抛出该错误。

答案3

(我希望你现在已经解决了这个问题,但无论如何我还是会尝试给出一些关于如何找到 Mercurial 的建议。)

第一:请来到 IRC 频道如果您遇到此类问题。这比尝试随机方法使其正常工作要好得多——到处安装东西只会让您和您的系统更加混乱 :-)

听起来您尝试过许多不同的方法来安装 Mercurial。混合使用不同的方法来安装 Mercurial(或任何其他 Python 程序)时要非常小心。您收到的第二个错误是因为您正在启动一个版本的 Mercurial(版本 1.7.2),但它正在查找较旧的库。因此,您现在可能已经有两个或多或少可以正常工作的安装。

所以我的建议是删除 Ubuntu 软件包并删除任何其他版本的 Mercurial。搜索调用的目录和文件mercurial并删除它们(但当然先删除软件包)。

然后安装软件包——如果 Ubuntu 常规存储库中的版本太旧,则使用Mercurial PPA。您收到的第一个错误意味着 Mercurial 无法找到它的库(当您从 Ubuntu 软件包安装 Mercurial 时,这当然是奇怪且意外的)。尝试运行

$ python -c 'import mercurial; print mercurial'

看看您是否可以mercurial自己导入包。如果可以,那么您将看到包所在的位置,并且可以将父目录添加到PYTHONPATH

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

如果这不起作用,请搜索commands.py。这是 Mercurial 中的一个文件,该文件的祖父目录应该在你的 上PYTHONPATH

这应该可以让你启动并运行...但是,再说一次,当你使用包管理器安装 Mercurial 时,你不必自己摆弄它。

答案4

只需将 Mercurial lib 路径添加到 PYTHONPATH。

  1. 找到库:locate mercurial,并找到 Lib PATH。例如 /usr/lib64/python2.6/site-packages/mercurial ;
  2. 将 Lib 路径添加到 PYTHONPATH:export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.6/site-packages

Lib 路径可能在你的机器上是不同的位置。你可以将导出语句永久添加到 ~/.bashrc 或 ~/.zshrc 。

相关内容