Как настроить Python Keyring для получения учетных данных из Windows Credential Manager в Windows 7?
Я потратил много времени на изучение пакета ключей, пытаясь заставить работать простой пример. Я использую Python 2.7 на машине с Windows 7-x64. Я установил пакет и подтвердил, что файлы находятся в моей папке Lib/site-packages.
В этом фрагменте кода из установочной документации, что должно идти в "системе"?
import keyring
keyring.get_password("system", "username")
Когда я запускаю код, я получаю следующую ошибку:
RuntimeError: рекомендуемый бэкэнд недоступен. Установите пакет keyrings.alt, если вы хотите использовать нерекомендованные бэкэнды.
Похоже, что он не признает Windows в качестве бэкэнда. Я чувствую, что упускаю простой шаг. Мы ценим любую помощь, включая простой пример кода получения общих учетных данных из диспетчера учетных данных Windows.
3 ответа
Наконец-то все заработало. Информация от Шона указала мне правильное направление с установкой pywin32. Оттуда я сделал метод проб и ошибок, создав тестовые учетные данные в Windows Credential Manager и протестировав функцию набора ключей Python.
Я работал только с Generic Credentials, что хорошо для моих целей. Я установил интернет или сетевой адрес на "тест". Имя пользователя было установлено на "test_user". Пароль был установлен на "test123". (Цитаты включены здесь для инструкции, не включайте при их вводе.
print keyring.get_password ("test", "test_user") вернул результат "test123"
Надеюсь, эта информация поможет кому-то еще. Спасибо Шон за направление, необходимое для решения этой проблемы.
Возможно, вам придется установить pywin32
пакет. Это решило проблему для меня.
С помощью conda
:conda install -e environment_name_here pywin32
С помощью pip
:pip install pywin32
По касательной: по какой-то причине код проглатывает исключение, которое в противном случае вывел бы класс диспетчера учетных данных Windows, чтобы предупредить вас об этой проблеме. Вот исключение, и вот где его ловят и выбрасывают.
Я не знаю, можете ли вы сделать это, но вместо этого вы можете попросить пользователя предоставить свои учетные данные, используя следующие команды
import admin
if not admin.isUserAdmin():
admin.runAsAdmin()