代码之家  ›  专栏  ›  技术社区  ›  Samuel Meacham

Mercurial扩展在Windows 7 x64中不工作?

  •  14
  • Samuel Meacham  · 技术社区  · 14 年前

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

    • 已安装python 2.6.5(32或64位,取决于系统)
    • 已安装的安装工具(用于轻松安装.exe)
    • 易于安装钥匙圈
    • 易于安装Mercurial钥匙圈

    然后在 [auth] 部分。它在我同事的计算机(32位xp sp3)上工作正常,但在我的计算机(Windows7Ultimatex64)上不工作。同样值得注意的是,安装工具必须在Win7x64上从源代码构建。( python setup.py bdist_wininst ,然后运行生成的安装工具-0.6c11.win-amd64.exe)。

    仅使用Mercurial 1.5二进制安装(the.msi)中的hg.exe,当我运行hg.exe时会得到此错误:

    ***未能导入扩展名mercurial_keyring:没有名为的模块 水银钥匙圈

    我试图更改mercurial.in i,指定mercurial_keyring.py文件的路径,而不是让mercurial找到它(因为它在pythonpath中)。

    旧的:

    [extensions]
    mercurial_keyring =
    

    新的:

    [extensions] mercurial_keyring =
    c:/mercurial/extensions/mercurial_keyring.py
    

    错误更改为:

    中止:无法导入模块 钥匙圈!

    因此,在提供指向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二进制dist(.msi)中的hg.exe
    • 从源代码生成时使用c:\python26\scripts中的hg.py
    • %userprofile%/mercurial.ini中的各种配置
    • 使用安装工具(easy_install.exe)安装keyring和mercurial_keyring
    • 从源代码构建keyring和mercurial_keyring(python setup.py bdist_wininst)

    什么都不起作用。最接近我的是使用hg.py从源代码构建。它至少不会给我错误,当我输入凭证时,它实际上会创建%userprofile%/wincrypto ou pass.cfg。但在随后的请求中,它不会自动输入凭据。它再次提示我要它们。

    有趣的是,乌龟 使用钥匙圈。我只是不能让它在命令行上工作。我认为Win7x64发生了一些事情,阻止了Mercurial(hg.exe)看到pythonpath,因此它找不到任何已安装的模块。

    是否有人在Win 7 x64中使用扩展?特别是安装了二进制的mercurial(而不是hg.py)?

    更新 我现在找到了一份合适的工作。因为乌龟 使用mercurial_keyring,我只需更改路径设置,将tortoiseHg文件夹包括在内,而不是C:\mercurial。现在,当我在命令行中键入“hg”时,它正在使用tortoisehg文件夹中的hg.exe,这很好。同样,这仍然是Win7X64上Mercurial扩展的一个问题。欢迎回答。

    3 回复  |  直到 7 年前
        1
  •  17
  •   Samuel Meacham    14 年前

    用我以前的更新回答我自己的问题,因为目前还没有其他人。

    合适的解决方法:因为TortoiseHg 使用mercurial_keyring,我只是将路径改为 包括 TortoiseHg文件夹,以及 排除 C:汞。现在,当我在命令行中键入“hg”时,它使用的是tortoisehg文件夹中的hg.exe,这对钥匙圈很好。

        2
  •  4
  •   alexandrul    14 年前

    我正在使用:

    • 在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版
      • 乌龟Hg 1.0.1 X64

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

    所有工具都使用其站点上提供的安装程序进行安装。Mercurial出现在Path中TortoiseHg之前。我正在使用一个通用配置文件 ~/.hgrc 对于两种工具,以及 Mercurial.ini TortoiseHg安装文件夹中的文件,它只加载 mercurial_keyring 延伸。

    在命令行中,每次需要密码时,我都必须输入密码,但在TortoiseHg中,钥匙圈扩展完全可以工作。

    Keyring Extension mercurial wiki上的页面:

    如果您在Windows上,我们建议您使用TortoiseHg。THG带有特定于Windows的钥匙圈后端,没有它,Mercurial的钥匙圈扩展就无法在Windows上正常工作。

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

    您可以从TortoiseHg复制所需的文件 藏书楼 进入Mercurial's 藏书楼 :

    • hgext\mercurial\u keyring.pyo
    • 钥匙圈初始化
    • 钥匙圈\后端.pyo
    • 钥匙圈\core.pyo
    • Win32加密.pyd
        3
  •  4
  •   Vadim Kotov First Zero    7 年前

    The extension page 声明TortoiseHg有一些额外的组件可以使其在Windows上工作,并且没有它们就不能正常工作。听起来参考TortoiseHg版本的解决方法可能是让它在Windows上工作的最简单方法。