4

我有一个程序,它使用 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

4

2 回答 2

2

由于我无法添加评论,我将在答案块中添加我的输入。希望这可以帮助。

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

“RuntimeError:没有推荐的后端可用。安装推荐的 3rd 方后端包;或者,如果您想使用非推荐的后端,请安装 keyrings.alt 包。有关详细信息,请参阅https://pypi.org/project/keyring。”

我用谷歌搜索了这个错误,并在下面找到了链接(这可能没有直接关系,但有人给出了解决方法)。我按照链接中的建议添加了解决方法(您也获得了正在使用的密钥环后端)并且它有效。

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

from keyring import get_keyring
get_keyring()

正如上面所建议的,您可以在脚本中的某处添加块,然后 exe 文件将完美运行。

于 2019-10-19T18:13:27.450 回答
1

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

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

    from keyring import get_keyring
    print("Keyring method: " + str(get_keyring()))
    
  2. 检索到的方法是“ keyring.backends.chainer.ChainerBackend ”,它在脚本上工作正常,但在导出到 .exe 文件时不能正常工作。所以我将' keyring.backends.Windows.WinVaultKeyring '设置为我的方法,因为我使用的是Windows。

    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>')
于 2021-05-04T18:21:49.643 回答