Mercurial扩展无法在Windows 7 x64中运行?

时间:2010-04-02 00:10:10

标签: windows-7 mercurial tortoisehg windows-7-x64

我们正在试驾Mercurial。我们不希望每次与存储库交互时都输入我们的用户/传递,因此我们设置了mercurial_keyring扩展。我们:

  • 已安装的Python 2.6.5(32位或64位,具体取决于系统)
  • 已安装的setuptools(适用于easy_install.exe)
  • easy_install keyring
  • easy_install mercurial_keyring

然后在[auth]部分对%userprofile%/ mercurial.ini进行了相应的更改。它在我的同事的计算机(32位xp sp3)上工作正常,但它在我的机器上不起作用(Windows 7 Ultimate x64)。另外值得注意的是,必须在Win 7 x64(python setup.py bdist_wininst上从源代码构建setuptools,然后运行生成的setuptools-0.6c11.win-amd64.exe)。

仅使用Mercurial 1.5二进制安装中的hg.exe(.msi),运行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

错误更改为:

  

abort:无法导入模块   钥匙圈!

因此,在提供mercurial_keyring扩展的路径时,仍无法找到依赖密钥环模块。

经过进一步调查,看来NO扩展工作正常。它们都会产生错误:

  

***无法导入扩展名[扩展名]:没有名为的模块   [模块名称]

在运行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)安装密钥环和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扩展的问题。答案欢迎。

3 个答案:

答案 0 :(得分:18)

通过我之前的更新回答我自己的问题,因为还没有其他人参与。

合适的解决方法:由于TortoiseHG 使用mercurial_keyring,我只是将我的PATH更改为 include tortoiseHG文件夹,排除 c :\善变。现在,当我在命令行输入“hg”时,它正在使用tortoiseHG文件夹中的hg.exe,它可以与密钥环一起使用。

答案 1 :(得分:4)

我正在使用:

    Windows Server 2008 SP2 x86上的
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x86
  • Windows Server 2008 R2上的
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x64

在这两个设置中,所有已配置的扩展都会加载而不会出错。

使用其网站上提供的安装程序安装所有工具。 Mercurial出现在TortoiseHg之前的PATH中。我正在为两个工具使用通用配置文件~/.hgrc,并在TortoiseHg安装文件夹中使用仅加载Mercurial.ini扩展名的mercurial_keyring文件。

在命令行中,我必须在每次需要时输入密码,但在TortoiseHg中,密钥环扩展它完全正常工作。

来自Mercurial wiki的Keyring Extension页面:

  

如果您使用的是Windows,我们建议您使用TortoiseHg。 THG附带Windows特定密钥环后端,没有这些后端,mercurial-keyring扩展无法在Windows上正常运行。

更新 http://asimilatorul.com/adapter/post/using-mercurial_keyring-extension-with-mercurial-on-windows/

您可以将TortoiseHg的 library.zip 中所需的文件复制到Mercurial的 library.zip 中:

  • hgext \ mercurial_keyring.pyo
  • keyring__init __。杓
  • 钥匙圈\ backend.pyo
  • 钥匙圈\ core.pyo
  • win32_crypto.pyd

答案 2 :(得分:4)

The extension page指出TortoiseHG有一些额外的组件可以使它在Windows上运行,没有它们就无法正常工作。听起来,引用TortoiseHG版本的解决方法可能是让它在Windows上运行的最简单方法。