我正在尝试在Windows上使用hg-git Mercurial扩展(Windows 7 64位,具体而言)。我安装了Mercurial和Git。我安装了Python 2.5(32位)。
我按照http://hg-git.github.com/上的说明安装了扩展程序。最初的easy_install失败了,因为没有Visual Studio 2003就无法编译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配置中的路径。我克隆了repo,并将我的扩展文件更改为:
[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可以找到它。我该怎么处理这些信息?
答案 0 :(得分:16)
这让我觉得德威不是 安装正确,或不在 路径。
你是对的。用于Windows的Mercurial二进制发行版是“冻结的” - 它们使用与它们捆绑在一起的Python代码和解释器,因此独立于系统PYTHONPATH中安装的软件包。当您在Mercurial.ini中指定hggit扩展名的路径时,hg会尝试使用直接路径导入它,但dulwich库不是由hg显式导入的,并且未与其库捆绑在一起,因此导入失败。
可以将dulwich和HgGit同时添加到与hg.exe一起安装的library.zip中,但对我来说最好的方法是从源代码安装包括Mercurial在内的所有东西,并使用安装在\ Python中的.bat文件执行命令\ Scripts中。在这种情况下,您需要:
安装德威 - 我会为Git和Dulwich使用最新的主干snapshot。
python setup.py --pure install
安装最新的HgGit snapshot
python setup.py install
修改Mercurial.ini以启用hggit =
答案 1 :(得分:10)
我在http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/
找到了一个更简单的解决方案然后我自己找到了一个更简单的解决方案:
在Windows上使用hg-git Mercurial扩展程序:
[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生成私钥。使用没有密码短语的密钥或使用Pageant.exe ssh身份验证代理。
答案 2 :(得分:8)
如果你可以安装TortoiseHg,它包括dulwich和其他要求。
答案 3 :(得分:4)
尝试以下配置(更改路径),这对我有用:
[extensions]
; hg-git extention
hgext.bookmarks =
hggit = C:\Python26\Lib\site-packages\hg_git-0.2.1-py2.6.egg\hggit
在我的情况下,当hggit =
为空值时,我会得到与此情况相同的错误。但我可以{python shell中import dulwich
没有问题,所以如果它包含easy-install.pth
,你应该检查你的dulwich-0.5.0-py2.5.egg
(正如大卫所指出的那样)。
我也安装了dulwich
的纯版本。
答案 4 :(得分:0)
在import dulwich
开始工作之前,hggit
将不起作用。检查dulwich
鸡蛋文件是否在easy-install.pth
下的site-packages
文件中。
要进一步调试,您可以尝试询问pkg_resources
:
import pkg_resources
pkg_resources.require("dulwich")
答案 5 :(得分:0)
我也遇到了dulwich.errors这个问题。而不是从头开始安装一切。我只是将dulwich从我的默认站点包复制到了mercurial站点包。工作没有问题。
答案 6 :(得分:0)
基于techtonik explanation导致dulwich.errors
导入失败的原因,我找到了一个比我已经提出的解决方案更简单的解决方案:
Windows x86上的Python 2.7的Mercurial
<x.y.z>
(源代码安装)
和
Windows x64上的Python 2.7的Mercurial
<x.y.z>
(源代码安装)
将将Mercurial作为Python模块安装到现有的Python 2.7(x86或x64)安装中的.EXE文件。
如果已经在此Python安装中安装了hg-git和dulwich,导入错误应该会消失。
如果您不确定现在该做什么,我希望这个循序渐进的解释有所帮助:
<python 2.7 install dir>
和<python 2.7 install dir>\Scripts
位于PATH
环境变量现在hg clone <some git repo>
可以在控制台上运行。
答案 7 :(得分:0)
即使在下载了最新的Tortoisehg并确保安装了hggit插件以及我的.ini和amp;之后,我也遇到了这个错误。 hgrc文件有正确的条目来启用hggit。
原来我的问题是我的道路上既有善变也有玳瑁。因此,当我运行任何hg命令时,它使用的是mercurial文件夹中的hg.exe而不是torsoisehg目录中的hg.exe。
这是有道理的,但我的mercurial安装没有插件。我的修复是从我的路径中删除mercurial所以hg命令通过tortoisehg目录,因为它已完全捆绑了hg。但是请注意,建议的选项可能是将mercurual升级到具有所需插件的版本,但这对我有用。我尝试将mercurial中的library.zip替换为tortoisehg中的一个,这样可行,但它会导致其他错误。
@ techtonik的回答让我走上了这条路,我很感激。
回顾:通过检查路径来验证哪个hg exe正在运行你的hg命令,因为hg.exe因为某种原因找不到插件。
答案 8 :(得分:0)
今天在安装最新的TortoiseHg时遇到了这个问题。
在您的系统上获取最新的python 2.7(我使用2.7.16)设置,您可能已经拥有了。 获取命令窗口并转到c:\ Python27文件夹 要运行pip,请使用Scripts \ pip或easy_install使用Scripts \ easy_install 尝试使用pip -V来确保获得2.7版本而不是3.X版本
错误:
c:\Python27>pip -V
pip 20.2.4 from c:\python38\lib\site-packages\pip (python 3.8)
右:
c:\Python27>Scripts\pip -V
pip 20.2.4 from c:\python27\lib\site-packages\pip (python 2.7)
如果已经安装了dulwich或hg-git
Scripts\pip uninstall dulwich
Scripts\pip uninstall hg-git
安装hg-git
Scripts\easy_install install hg-git
您现在应该有两个文件夹
C:\Python27\Lib\site-packages\dulwich-0.19.16-py2.7-win-amd64.egg\dulwich
C:\Python27\Lib\site-packages\hg_git-0.9.0-py2.7.egg\hggit
仅当Dulwich版本为0.19.16(小于0.20.x)时才有效
将这些文件夹(dulwich和hggit)复制到zip文件中 C:\ Program Files \ TortoiseHg \ lib \ library.zip
答案 9 :(得分:-2)
sudo apt-get install python-dev#Dam you dependency!
sudo easy_install dulwich
成功!