我正在尝试在Windows上使用hg-git Mercurial扩展(特定于Windows 7 64位)。我安装了Mercurial和Git。我安装了Python 2.5(32位)。

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

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

  • git克隆git://git.samba.org/jelmer/dulwich.git
  • cd德威奇
  • c:\Python25\python setup.py --pure install

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

    在我的C:\Users\username\Mercurial.ini中,我具有:
    [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配置中引用路径。我克隆了存储库,并将扩展文件更改为:
    [extensions]
    hgext.bookmarks =
    hggit = c:\code\hg-git\hggit
    

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

    好的,这告诉我现在正在查找hggit,因为我可以在hg-git\hggit\git_handler.py中看到它的调用
    from dulwich.errors import HangupException
    

    这使我认为dulwich安装不正确或不在路径中。

    更新:

    从Python命令行:
    import dulwich
    

    产生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')
    

    产生[dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]
    那这告诉我什么呢?导入dulwich失败,但是显然pkg_resources可以找到它。我该如何处理这些信息?

    最佳答案



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

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

  • Install Mercurial来自源。这将构建“纯”版本,因为Windows用户通常没有Visual Studio或替代编译器来编译C加速器。
  • 安装Dulwich-我将为Git和Dulwich使用最新的中继snapshot

    python setup.py --pure安装
  • 安装最新的HgGit snapshot

    python setup.py安装
  • 编辑Mercurial.ini以启用hggit =
  • 使用\Python\Scripts\hg.bat启动Mercurial
  • 08-24 17:51