【问题标题】:Mercurial extensions not working in Windows 7 x64?Mercurial 扩展在 Windows 7 x64 中不起作用?
【发布时间】:2011-02-03 14:20:53
【问题描述】:

我们正在工作中试驾 Mercurial。我们不想在每次与存储库交互时都输入我们的用户/密码,因此我们设置了 mercurial_keyring 扩展。我们:

  • 已安装 Python 2.6.5(32 位或 64 位,取决于系统)
  • 已安装 setuptools(用于 easy_install.exe)
  • easy_install 密钥环
  • easy_install mercurial_keyring

然后在[auth] 部分中对 %userprofile%/mercurial.ini 进行了适当的更改。它在我同事的计算机(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 扩展的问题。欢迎回答。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我正在使用:

      • 在 Windows Server 2008 SP2 x86 上:
        • Python 2.6.5 x86
        • Mercurial 1.5.1 x86
        • 乌龟汞 1.0.1 x86
      • 在 Windows Server 2008 R2 上:
        • Python 2.6.5 x86
        • Mercurial 1.5.1 x86
        • 乌龟汞 1.0.1 x64

      在这两种设置中,所有已配置的扩展程序都已正确加载。

      所有工具均使用其网站上提供的安装程序进行安装。 Mercurial 出现在 PATH 中的 TortoiseHg 之前。我为这两个工具使用了一个通用配置文件 ~/.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__.pyo
      • keyring\backend.pyo
      • keyring\core.pyo
      • win32_crypto.pyd

      【讨论】:

      • 我知道密钥环扩展适用于 TortoiseHg。它不适用于从 mercurial 安装中安装的 hg.exe,因为 hg.exe 在执行时似乎看不到 PYTHONPATH,并且找不到任何扩展名。由于您在 Mercurial.ini 中加载了特定于 only tortoiseHG 的密钥环扩展,因此您不会尝试使用 mercurial hg.exe 加载它。尝试将扩展名添加到 Server 2008 R2 机器上的 ~/.hgrc 中,看看它是否有效。这就是问题所在。
      • 我设置的重点是仅为 TortoiseHg 加载密钥环。但是所有其他扩展都可以在 WS2008 R2 x64 上与 Mercurial 一起正常工作(其行为应该与 Win 7 x64 一样)。
      【解决方案3】:

      用我之前的更新回答我自己的问题,因为还没有其他接受者。

      合适的解决方法:由于 TortoiseHG 确实与 mercurial_keyring 一起工作,我只是将我的 PATH 更改为 include tortoiseHG 文件夹,然后 exclude c :\水银。现在,当我在命令行输入“hg”时,它使用的是 tortoiseHG 文件夹中的 hg.exe,它与密钥环配合得很好。

      【讨论】:

      • C:\Program Files\TortoiseHg 存在于 PATH 中,尽管我不得不从中删除另一个 Mercurial 版本:c:\Program Files\Mercurial
      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 2012-07-11
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 2021-04-06
      相关资源
      最近更新 更多