RuntimeError:没有推荐的后端可用。 (带Python的钥匙圈)

时间:2019-06-26 19:33:45

标签: python pyinstaller python-keyring

我有一个使用Yagmail和密钥环包来安全存储电子邮件凭据的程序。当我在atom.io中运行此脚本并使其空闲时,它会起作用。

但是,在我将其与pyinstaller打包后,它会显示以下消息:

RuntimeError: No recommended backend was available. Install a recommended 3rd party backend package; or, install the keyrings.alt package if you want to use the non-recommended backends. See https://pypi.org/project/keyring for details.

我的程序中有

import keyring

我也已经安装了keyring.alt

2 个答案:

答案 0 :(得分:0)

由于我无法添加评论,因此我将自己的输入添加到答案栏中。希望对您有所帮助。

我也有类似的问题,我使用了密钥环模块将密码存储在我的python脚本中,并使用pyinstaller将其打包。当我直接运行它时,我的脚本运行完美。但是,当我尝试运行python exe时,出现如下错误

“ RuntimeError:没有推荐的后端可用。请安装推荐的第三方后端软件包;或者,如果您要使用非推荐的后端,请安装keyrings.alt软件包。有关详细信息,请参见https://pypi.org/project/keyring。” < / p>

我搜索了此错误,并在下面找到了链接(该链接可能没有直接关系,但是有人提供了解决方法)。我按照链接中的建议添加了解决方法(您也获得了正在使用的密钥环后端),并且可以正常工作。

链接:https://github.com/jaraco/keyring/issues/359 查找您使用哪个密匙环后端的代码

from keyring import get_keyring
get_keyring()

就像上面的建议一样,您可以在脚本中的某个位置添加该块,然后exe文件将完美运行。

答案 1 :(得分:0)

根据@Rena76 的回答,这是我所做的:

  1. 为了获得用于存储密码的默认“方法”,我从 keyring 导入了 get_keyring 并执行了上述函数。

    from keyring import get_keyring
    print("Keyring method: " + str(get_keyring()))
    
  2. 检索到的方法是“keyring.backends.chainer.ChainerBackend”,它在脚本上运行良好,但在导出到 .exe 文件时不起作用。因此,鉴于我使用的是 Windows,我将“keyring.backends.Windows.WinVaultKeyring”设置为我的方法。

    keyring.core.set_keyring(keyring.core.load_keyring('keyring.backends.Windows.WinVaultKeyring'))
    
  3. 最后,为了能够在 Windows Vault 上保存凭据,我将导入 win32 库。

    import win32api, win32, win32timezone
    

现在我可以成功执行 Keyring 功能,例如:

   keyring.set_password(service_name='<service>', username='<username>', password='<password>')