Импорт python в файле mercurial_keyring.py, похоже, ведет себя по-другому.

Причудливая ошибка импорта не позволяет мне установить расширение Mercurial.

Я пытаюсь получить mercurial_keyring , так что мне не нужно вводить свое имя пользователя и пароль каждый раз, когда я использую mercurial для проекта.

Я использую Python 2.7.1. Я установил mercurial с двоичным файлом, предоставленным на https://www.mercurial-scm.org/ .

Я установил keyring и mercurial_keyring с ] pip .

Сначала я попытался добавить расширение, добавив это в ~ / .hgrc :

[extensions]
...
mercurial_keyring = 

, как указано в инструкциях по установке здесь . Однако я получил следующую ошибку:

*** 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

И казалось, что все идет своим чередом.

Однако, когда я пытаюсь выполнить какие-либо переменные команды, требующие моего пароля, он будет сохранен с помощью связки ключей ( например hg pull , hg push ) Я получаю сообщение об ошибке

abort: No module named keyring!

Самая запутанная часть состоит в том, что в строке 28 mercurial_keyring.py есть четкий

import keyring

, который разрешен без проблем. Фактически, любая связка ключей импорта преуспевает вне классов и методов и терпит неудачу внутри них!

Просто ради полноты я упомяну, что эта ошибка возникает в mercurial_keyring. py в классе PasswordStore в методе get_http_password при попытке выполнить следующее

return keyring.get_password(...)

Есть какие-то мысли?

У меня такое чувство, что я упускаю что-то очевидное, но я потратил много времени, пытаясь понять это, и Google пока что не особенно помог. Мы будем благодарны за любой вклад.

6
задан Vadim Kotov 20 June 2017 в 08:18
поделиться