如何正确安装dulwich以使hg git在Windows上工作?

2024-05-23 17:42:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在Windows上使用hg git Mercurial扩展(具体来说是Windows 7 64位)。我安装了Mercurial和Git。我已经安装了Python2.5(32位)。

我按照http://hg-git.github.com/上的说明安装扩展。最初的easy_安装失败,因为它无法在没有Visual Studio 2003的情况下编译dulwich。

我通过以下方式手动安装了dulwich:

  • git克隆git://git.samba.org/jelmer/dulwich.git
  • 德威治
  • c: \Python25\python setup.py—纯安装

现在,当我运行easy_install hg git时,它成功了(因为满足了dulwich依赖关系)。

在我的C:\Users\username\Mercurial.In I中,我有:

[extensions]
hgext.bookmarks =
hggit =

当我在命令提示符下键入'hg'时,我看到: “***导入扩展hggit失败:没有名为hggit的模块”

在我的c:\ Python25文件夹下,我看到的对hggit的唯一引用是Lib\site-packages\hg_git-0.2.1-py2.5.egg。这是应该提取到某处,还是应该按原样工作?

由于失败,我尝试了hg git页面中的“更多相关”指令,建议克隆git://github.com/schacon/hg-git.git并引用Mercurial配置中的路径。我克隆了repo,并将扩展文件更改为:

[extensions]
hgext.bookmarks =
hggit = c:\code\hg-git\hggit

现在,当我运行hg时,我看到:**failed to import extension hg git from c:\ code\hg git\hggit:No module named dulwich.errors。

好的,这就告诉我它现在正在查找hg git,因为我可以在hggit\hggit\git\handler.py中看到它调用的

from dulwich.errors import HangupException

这使我认为德威奇没有正确安装,或没有在路径上。

更新:

从Python命令行:

import dulwich

产生Import Error: No module named dulwich

但是,在C:\ Python25\Lib\site包下,我确实有一个dulwich-0.5.0-py2.5.egg文件夹,它似乎已填充。这是由上述步骤创建的。有没有一个额外的步骤让它成为Python“路径”的一部分?

从Python命令行(如其中一个答案中建议的那样):

import pkg_resources
pkg_resources.require('dulwich')

产量[dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]

那这告诉我什么?导入dulwich失败了,但显然pkg_resources可以找到它。我能用这些信息做什么?


Tags: importgit路径githubcomeggwindowssite
3条回答

我在http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/找到了一个更简单的解决方案

然后我自己找到了一个更简单的解决方案:

要在Windows上使用hg git Mercurial扩展:

  1. 安装正式的Mercurial二进制文件
  2. 放置dulwich文件夹 从dulwich sources和hg git文件夹从hggit sources到 Mercurial安装文件夹中library.zip的根目录
  3. 将以下内容添加到%USERPROFILE%\Mercurial.ini:

[extensions]
hgext.bookmarks=
hggit=

要获得SSH支持,您需要PuTTY家族的plink.exe。之后,应将以下内容添加到Mercurial.ini中:

[ui]
username = John Doe <foo@example.com>
ssh=d:/home/lib/dll/plink.exe -i "d:/home2/ssh-private-key.ppk"

首次连接到SSH服务器时,应启动putty.exe并尝试使用它进行连接。它将把服务器密钥指纹添加到注册表中。否则plink会要求您接受指纹,但它不接受任何输入。

您可以使用puttygen.exe生成私钥。使用不带密码短语的密钥或使用pagent.exe ssh身份验证代理。

如果你可以安装龟,它包括德威治和其他要求。

That makes me think dulwich is not installed correctly, or not in the path.

你完全正确。用于Windows的Mercurial二进制发行版是“冻结的”——它们使用捆绑在一起的Python代码和解释器,因此独立于安装在系统PYTHONPATH中的包。当您在Mercurial.ini中指定hggit扩展的路径时,hg尝试使用直接路径导入它,但是dulwich库不是由hg显式导入的,并且没有与其库绑定,因此导入失败。

可以将Dulwich和HgGit都添加到与hg.exe一起安装的library.zip中,但对我来说,最好的方法是从源代码安装所有内容,包括Mercurial,并使用安装到\Python\Scripts中的.bat文件执行命令。在这种情况下,您需要:

  1. Install Mercurial来自源。这会生成“纯”版本,因为Windows用户通常没有Visual Studio或其他编译器来编译C加速。
  2. 安装Dulwich-我将为Git和Dulwich使用最新的trunksnapshot

    python setup.py—纯安装

  3. 安装最新的HgGitsnapshot

    python setup.py安装

  4. 编辑Mercurial.ini以启用hggit =

  5. 使用\Python\Scripts\hg.bat启动Mercurial

相关问题 更多 >