我正在尝试在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:
现在,当我运行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文件执行命令。在这种情况下,您将需要:
python setup.py --pure安装
python setup.py安装
hggit =