Dan*_*ani 5 python windows 32-bit pyinstaller python-keyring
我有以下python测试代码:
import keyring
print(keyring.get_keyring())
keyring.set_password("a","b","c")
print(keyring.get_password("a","b"))
Run Code Online (Sandbox Code Playgroud)
如果我使用32位python或64位一个运行此代码,则将获得以下输出(按预期):
<keyring.backends.Windows.WinVaultKeyring object at 0x00000187B7DD6358>
c
Run Code Online (Sandbox Code Playgroud)
我的目的是构建两个独立的可执行文件(32位和64位):为了实现我正在使用pyinstaller和以下命令(test.py是包含上面显示的python代码的文件的名称)
pyinstaller --onefile test.py
Run Code Online (Sandbox Code Playgroud)
如果我运行64位exe,则将获得以下输出(按预期):
<keyring.backends.Windows.WinVaultKeyring object at 0x00000187B7DD6358>
c
Run Code Online (Sandbox Code Playgroud)
相反,如果我运行32位exe,则会获得以下输出:
<keyring.backends.fail.Keyring object at 0x05463ED0>
Traceback (most recent call last):
File "test.py", line 3, in <module>
keyring.set_password("a","b","c")
File "site-packages\keyring\core.py", line 47, in set_password
File "site-packages\keyring\backends\fail.py", line 23, in get_password
RuntimeError: No recommended backend was available. Install the keyrings.alt package if you want to use the non-recommended backends. See README.rst for details.
[2732] Failed to execute script test
Run Code Online (Sandbox Code Playgroud)
有人知道发生了什么吗?
谢谢,
丹尼尔(Daniele)
使用备用密钥环后端解决。如果我将代码更改为:
import keyring
print(keyring.get_keyring())
keyring.set_password("a","b","c")
print(keyring.get_password("a","b"))
Run Code Online (Sandbox Code Playgroud)
到:
import keyring
from keyrings.alt import Windows
keyring.set_keyring(Windows.RegistryKeyring())
print(keyring.get_keyring())
keyring.set_password("a","b","c")
print(keyring.get_password("a","b"))
Run Code Online (Sandbox Code Playgroud)
有用。
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |