python导入似乎在mercurial_keyring.py文件中表现不同

art*_*omp 6 python import mercurial abort

一个奇怪的import错误阻止我安装mercurial扩展.

我正在尝试让mercurial_keyring扩展程序运行,这样我每次使用mercurial进行项目时都不必输入我的用户名和密码.

我正在使用Python 2.7.1.我在https://www.mercurial-scm.org/上提供的二进制文件中安装了mercurial .

我安装keyringmercurial_keyring使用pip.

我首先尝试通过将此添加到~/.hgrc以下内容来添加扩展名:

[extensions]
...
mercurial_keyring = 
Run Code Online (Sandbox Code Playgroud)

在安装说明表示这里.但是,我收到以下错误:

*** failed to import extension mercurial_keyring: No module named mercurial_keyring
Run Code Online (Sandbox Code Playgroud)

从相同的安装说明,我尝试直接指向mercurial mercurial_keyring.py文件,这是有效的.

[extensions]
...
hgext.mercurial_keyring = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial_keyring.py
Run Code Online (Sandbox Code Playgroud)

事情似乎正在发生变化.

然而,当我尝试执行任何含汞命令要求我的密码,这样它将被保存keyring(例如 hg pull,hg push)我得到的错误

abort: No module named keyring!
Run Code Online (Sandbox Code Playgroud)

最令人困惑的部分是有一个明确的

import keyring
Run Code Online (Sandbox Code Playgroud)

在第28行mercurial_keyring.py中解决没有任何问题.事实上,任何import keyring成功的外部类和方法都会在内部失败!

只是为了彻底,我会提到当尝试以下方法时,在方法mercurial_keyring.pyPasswordStore类中出现此错误get_http_password

return keyring.get_password(...)
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

我觉得我错过了一些明显的东西,但是我花了很多时间试图解决这个问题,到目前为止谷歌并没有特别有用.任何输入将不胜感激.

nco*_*lan 9

最有可能的hg是,使用系统python(2.6)而不是已安装的2.7的副本.

尝试安装mercurial_keyringkeyring在2.6下,看看是否能按预期工作.

  • `尝试在2.6下安装mercurial_keyring和keyring,看看是否能按预期工作....你是怎么做到的? (3认同)