【发布时间】:2011-07-07 14:08:33
【问题描述】:
一个奇怪的 import 错误阻止我安装一个 mercurial 扩展。
我正在尝试让mercurial_keyring 扩展程序运行,这样我就不必在每次使用 mercurial 进行项目时都输入我的用户名和密码。
我使用的是 Python 2.7.1。我使用https://www.mercurial-scm.org/ 提供的二进制文件安装了 mercurial。
我用pip 安装了keyring 和mercurial_keyring。
我首先尝试通过将其添加到 ~/.hgrc 来添加扩展:
[extensions]
...
mercurial_keyring =
如安装说明here 中所示。但是,我收到以下错误:
*** failed to import extension mercurial_keyring: No module named mercurial_keyring
根据相同的安装说明,我尝试将 mercurial 直接指向 mercurial_keyring.py 文件,该文件有效。
[extensions]
...
hgext.mercurial_keyring = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial_keyring.py
事情似乎进展顺利。
但是,当我尝试执行任何需要我的密码的 mercurial 命令时,它会被 keyring 保存(例如 hg pull,hg push)我收到错误
abort: No module named keyring!
最令人困惑的部分是有一个明确的
import keyring
mercurial_keyring.py 的第 28 行已解决,没有任何问题。事实上,任何import keyring 在类和方法之外成功,在它们内部失败!
为了彻底起见,我会提到这个错误出现在get_http_password方法中PasswordStore类中的mercurial_keyring.py尝试以下操作时
return keyring.get_password(...)
有什么想法吗?
我感觉我遗漏了一些明显的东西,但我花了很多时间试图弄清楚这一点,而到目前为止,谷歌并没有提供特别的帮助。任何意见将不胜感激。
【问题讨论】:
-
运行
python -m site时得到什么输出? (您需要将其添加到问题中,它无法作为评论阅读) -
我目前的怀疑是您的 2.7 安装或系统 2.6 安装有问题,因此 mercurial 正在使用其中一个,而您的手动测试正在使用另一个。
标签: python mercurial import abort