来自 Rust 编程语言 (crates.io) 的 C 级密钥环模块绑定
项目描述
rskeyring(生锈钥匙圈)
一个 C 级的 Rust 密钥环库绑定到 Python ( https://github.com/DK26/pyrust-keyring )。
Rust 库 (crate) 本身是由 hwchen ( https://github.com/hwchen/keyring-rs ) 创建的。
动机
由于目前无法使用pypi.org密钥环库通过 PyInstaller库存储敏感数据,并且由于
该错误
已经存在很长时间了,所以我决定尝试绑定 Rust 编程语言
密钥环库(因为我仍在学习它)到 Python 并且能够成功地做到这一点。keyring.errors.NoKeyringError
在 Windows 10 上成功测试可与 PyInstaller 一起使用。
安装
pip install rskeyring
用法
存储或更新密码
import rskeyring
from getpass import getpass
username = input("Username: ")
password = getpass()
try:
rskeyring.set_password("service", username, password)
except OSError:
print(f"Unable to create or update service for {username}."
f"\nPlease make sure you have the proper permissions")
找回密码
import rskeyring
username = input("Username: ")
try:
password = rskeyring.get_password("service", username)
print(password)
except OSError:
print(f"Unable to get {username}'s password from 'service'")
删除密码
import rskeyring
username = input("Username: ")
try:
rskeyring.delete_password("service", username)
except OSError:
print(f"Unable to remove {username} from 'service'")
例外
目前,外部 Rustkerying-rs库不提供任何具体的错误详细信息。
在这个阶段,我们只是抛出一个OSError带有底层 Rust 库本身的错误消息的将军。
- 例如
OSError: Windows Vault Error
单元测试
python -m unittest tests.lib_unittest
手动使用编译库
setuptools_rust应该能够在调用时自动编译和复制 rust库pip install rskeyring。
如果您希望手动编译并导入 Rust 库到您的 python 设置,请参考以下注意事项:
编译
为了编译 Rust 代码,您需要拥有rustup工具链。
要安装rustup工具链,请转到https://rustup.rs
在此目录中,执行下一个命令进行编译:
cargo build --release
视窗
将文件复制pyrust-keyring\target\release\rskeyring.dll到您的 Python 项目。确保将其扩展名从 重命名.dll为.pyd.
苹果系统
将文件复制pyrust-keyring/target/release/rskeyring.dylib到您的 Python 项目。确保将其扩展名从 重命名.dylib为.so.
文档
help(rskeyring)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。