我们正在工作中试驾 Mercurial。我们不想在每次与存储库交互时都输入我们的用户/密码,因此我们设置了 mercurial_keyring 扩展。我们:
- 已安装 Python 2.6.5(32 位或 64 位,取决于系统)
- 已安装 setuptools(用于 easy_install.exe)
- easy_install 密钥环
- easy_install mercurial_keyring
然后对该部分中的 %userprofile%/mercurial.ini 进行适当的更改[auth]
。它在我同事的计算机(32 位 xp sp3)上运行良好,但在我的机器(Windows 7 Ultimate x64)上无法运行。同样值得注意的是,setuptools 必须从 Win 7 x64 上的源代码构建(python setup.py bdist_wininst
然后运行生成的 setuptools-0.6c11.win-amd64.exe)。
仅使用 Mercurial 1.5 二进制安装(.msi)中的 hg.exe,运行 hg.exe 时出现此错误:
*** 未能导入扩展 mercurial_keyring:没有名为 mercurial_keyring 的模块
我试图更改我的 mercurial.ini,以指定 mercurial_keyring.py 文件的路径,而不是让 mercurial 找到它(因为它在 PYTHONPATH 中)。
老的:
[extensions]
mercurial_keyring =
新的:
[extensions] mercurial_keyring =
c:/mercurial/extensions/mercurial_keyring.py
错误变为:
中止:无法导入模块密钥环!
因此,在提供 mercurial_keyring 扩展的路径时,仍然无法找到依赖的密钥环模块。
经过进一步调查,似乎没有扩展工作。它们都产生错误:
*** 导入扩展 [扩展名] 失败:没有名为 [模块名] 的模块
似乎在运行 hg.exe 时,它不知道 PYTHONPATH。我试过了:
- Python 2.6.5 32 位
- Python 2.6.5 64 位
- 使用 MinGW 从源代码构建 Mercurial 1.5
- 使用 MSVC9 从源代码构建 Mercurial 1.5
- 使用 1.5 二进制 dist (.msi) 中的 hg.exe
- 从源代码构建时使用 c:\python26\scripts 中的 hg.py
- %userprofile%/mercurial.ini 中的各种配置
- 使用 setuptools (easy_install.exe) 安装 keyring 和 mercurial_keyring
- 从源代码构建密钥环和 mercurial_keyring (python setup.py bdist_wininst)
没有任何效果。我最接近的是从源代码构建时使用 hg.py 。它至少不会给我错误,并且在我输入凭据时实际上会创建 %userprofile%/wincrypto_pass.cfg 。但在后续请求中,它不会自动输入凭据。它再次提示我。
有趣的是,TortoiseHG正在使用钥匙圈。我只是无法让它在命令行上工作。我认为 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 扩展的问题。欢迎回答。