如何正确安装dulwich以使hg-git在Windows上运行?

Jos*_*gan 52 python windows mercurial hg-git dulwich

我正在尝试在Windows上使用hg-git Mercurial扩展(Windows 7 64位,具体而言).我安装了Mercurial和Git.我安装了Python 2.5(32位).

我按照http://hg-git.github.com/上的说明安装了扩展程序.最初的easy_install失败,因为没有Visual Studio 2003它无法编译dulwich.

我手动安装了德威:

  • git clone git://git.samba.org/jelmer/dulwich.git
  • cd dulwich
  • c:\ Python25\python setup.py --pure install

现在当我运行easy_install hg-git时,它会成功(因为dulwich依赖性得到满足).

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

[extensions]
hgext.bookmarks =
hggit =
Run Code Online (Sandbox Code Playgroud)

当我在命令提示符下键入'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
Run Code Online (Sandbox Code Playgroud)

现在当我运行hg时,我看到:***无法从c:\ code\hg-git\hggit导入扩展名hggit:没有名为dulwich.errors的模块.

好的,所以这告诉我它现在正在寻找hggit,因为我可以在hg-git\hggit\git_handler.py中看到它调用

from dulwich.errors import HangupException
Run Code Online (Sandbox Code Playgroud)

这让我觉得dulwich没有正确安装,或者没有安装在路径中.

更新:

从Python命令行:

import dulwich
Run Code Online (Sandbox Code Playgroud)

产量 Import Error: No module named dulwich

但是,在C:\ Python25\Lib\site-packages下,我有一个似乎已填充的dulwich-0.5.0-py2.5.egg文件夹.这是由上述步骤创建的.我需要采取额外的步骤使其成为Python"路径"的一部分吗?

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

import pkg_resources
pkg_resources.require('dulwich')
Run Code Online (Sandbox Code Playgroud)

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

那告诉我什么呢?导入dulwich失败,但显然pkg_resources可以找到它.我该怎么处理这些信息?

ana*_*nik 16

这让我觉得dulwich没有正确安装,或者没有安装在路径中.

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

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

  1. 从源代码安装Mercurial.这构建了"纯"版本,因为Windows用户通常没有Visual Studio或替代编译器来编译C加速.
  2. 安装德威 - 我会为Git和Dulwich 使用最新的主干快照.

    python setup.py --pure install

  3. 安装最新的HgGit 快照

    python setup.py安装

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

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

  • @Piotr:没有错,只是`library.zip`并不总是普通的档案.所以你需要一个这样的脚本 - http://techtonik.rainforce.org/2010/01/repacking-libraryzip-from-py2exe.html (2认同)

npo*_*cop 11

我发现了一个简单的解决方案在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文件夹和来自hg-git源的hggit文件夹放到Mercurial安装文件夹中的library.zip的根目录下
  3. 将以下内容添加到%USERPROFILE%\ Mercurial.ini:

[extensions]
hgext.bookmarks=
hggit=
Run Code Online (Sandbox Code Playgroud)

要获得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"
Run Code Online (Sandbox Code Playgroud)

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

您可以使用puttygen.exe生成私钥.使用没有密码短语的密钥或使用Pageant.exe ssh身份验证代理.


kuy*_*kuy 8

如果你可以安装TortoiseHg,它包括dulwich和其他要求.

  • @David是否安装了其他Mercurial可执行文件?请确保您的“ hg”命令指向TortoiseHg的Mercurial可执行文件。或尝试使用TortoiseHg 1.0.4。 (2认同)