我有一个使用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
答案 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 的回答,这是我所做的:
为了获得用于存储密码的默认“方法”,我从 keyring 导入了 get_keyring 并执行了上述函数。
from keyring import get_keyring
print("Keyring method: " + str(get_keyring()))
检索到的方法是“keyring.backends.chainer.ChainerBackend”,它在脚本上运行良好,但在导出到 .exe 文件时不起作用。因此,鉴于我使用的是 Windows,我将“keyring.backends.Windows.WinVaultKeyring”设置为我的方法。
keyring.core.set_keyring(keyring.core.load_keyring('keyring.backends.Windows.WinVaultKeyring'))
最后,为了能够在 Windows Vault 上保存凭据,我将导入 win32 库。
import win32api, win32, win32timezone
现在我可以成功执行 Keyring 功能,例如:
keyring.set_password(service_name='<service>', username='<username>', password='<password>')