- 安装了 Python 2.6.5(32位或64位,取决于系统)
- 安装了 setuptools(用于 easy_install.exe)
- easy_install keyring
- easy_install mercurial_keyring
当我仅使用 Mercurial 1.5 二进制安装包中的 hg.exe 时,运行 hg.exe 时会出现以下错误:
我尝试更改我的 mercurial.ini,指定 mercurial_keyring.py 文件的路径,而不是让 mercurial 自己找到它(因为它在 PYTHONPATH 中)。*** failed to import extension mercurial_keyring: No module named mercurial_keyring
旧内容:
[extensions]
mercurial_keyring =
新内容:
[extensions] mercurial_keyring =
c:/mercurial/extensions/mercurial_keyring.py
错误信息变成了:
中止: 无法导入模块keyring!
因此,虽然提供mercurial_keyring扩展的路径是可行的,但仍然找不到依赖的keyring模块。
进一步调查后发现,所有扩展都不起作用。 它们都会产生以下错误:
*** 导入扩展名[扩展名]失败:找不到模块[模块名]
当运行hg.exe时,它似乎不知道PYTHONPATH。我尝试过:
- Python 2.6.5 32位
- Python 2.6.5 64位
- 使用MinGW构建Mercurial 1.5
- 使用MSVC9从源代码构建Mercurial 1.5
- 在1.5二进制分布(.msi)中使用hg.exe
- 在从源代码构建时使用c:\ python26 \ scripts中的hg.py
- %userprofile%/mercurial.ini中的各种配置
- 使用setuptools(easy_install.exe)安装keyring和mercurial_keyring
- 从源代码构建keyring和mercurial_keyring(python setup.py bdist_wininst)
没有任何效果。最接近成功的是在从源代码构建时使用hg.py。它至少不会给我出错,并在我输入凭据时实际上创建%userprofile%/wincrypto_pass.cfg。但是,在随后的请求中,它不会自动输入凭据。它再次提示我输入。
有趣的是,TortoiseHG正在使用keyring。我只是无法在命令行上让它工作。我认为在Win 7 x64上发生了什么事情,阻止mercurial(hg.exe)看到PYTHONPATH,因此它找不到任何已安装的模块。
有人在Win 7 x64上能够正常使用扩展吗?特别是在mercurial的二进制安装中(而非hg.py)?
更新 目前我找到了一个合适的解决方法。由于TortoiseHG与mercurial_keyring配合使用,所以我只需更改我的PATH设置以包括tortoiseHG文件夹,而不包括c:\mercurial。现在当我在命令行中键入“hg”时,它将使用tortoiseHG文件夹中的hg.exe,这很好用。尽管如此,这仍然是Win 7 x64上mercurial扩展的问题。欢迎回答。
C:\Program Files\TortoiseHg
was present in the PATH, although I had to remove another Mercurial version from it:c:\Program Files\Mercurial
- Kurt Van den Branden