一个奇怪的import
错误阻止我安装mercurial扩展。
我正在尝试运行mercurial_keyring
扩展,这样我就不必每次为项目使用mercurial时都键入用户名和密码。
我使用的是Python2.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(...)
有什么想法吗?
我有种感觉,我遗漏了一些显而易见的东西,但我花了很多时间试图弄清楚这一点,而谷歌到目前为止并没有特别的帮助。如有任何意见,将不胜感激。
Mercurial使用了一个名为“demandimport”的特性,它将推迟模块的导入,直到第一次使用它们。所以,你的
不会在那一行失败,但它只有在第一次使用时才会哀号(即)
我遇到了同样的问题,并通过使用easy install安装扩展解决了该问题: sudo easy_安装mercurial_钥匙圈
这将它安装在mercurial使用的同一个python下。
很可能,
hg
是使用系统python(2.6)而不是安装的2.7的副本运行的。尝试在2.6下安装
mercurial_keyring
和keyring
,看看这是否能让事情按预期工作。相关问题 更多 >
编程相关推荐