在带有 Python 2.7 和 GPG4Win v2.2.0 的 Windows 7 上使用 python-gnupg v0.3.5
test_gnupg.py 导致 2 次失败:
测试搜索键是否有效...失败
文档测试:gnupg.GPG.recv_keys ...失败
这些位置中的每一个都存在 2 个密钥环(每个位置都存在 secring 和 pubring):
在 GPGHome 目录下 (C:\Program Files (x86)\GNU\GnuPG)
在用户配置文件下(C:\Users\\AppData\Roaming\gnupg)
如果我创建 GPG 实例并将密钥环文件路径设置为用户配置文件 pubring.pgp,我会从 GPG.list_keys() 获得结果。如果我让它使用 gpghome 目录 pubring.pgp 我不会从 list_keys() 得到任何结果,因为该密钥环是空的。
因此,鉴于我指定了用户配置文件密钥环,并且我有一个可以使用的密钥,这就是发生的情况:
>>>data = '1234 abcd 56678'
>>>fingerprint = u'<fingerprint>'
>>>enc = gpg.encrypt(data,fingerprint)
>>>enc.data
''
encrypt_file() 给出相同的结果,没有任何反应,没有错误。我对这一切都不是特别精通,但似乎如果我有数据和公钥,这应该很简单。鉴于我在任何地方都看不到任何日志文件,并且在尝试此操作时也没有错误,因此我在尝试确定出了什么问题时遇到了可怕的时间。
我如何确定这里出了什么问题?我已经阅读了在 StackOverflow、 http ://pythonhosted.org/python-gnupg/#getting-started和 python-gnupg 的 google 组上可以找到的几乎所有内容。
另外,为什么我首先要有两套单独的钥匙圈?
编辑:澄清有 2 套独立的 pubring 和 secring
编辑2:下面的答案有助于导致实际问题。gnupg.GPG() 构造函数正在设置包含“no-tty”的 gpg 命令行选项,调用 gnupg.GPG(options='') 可以解决问题并成功加密数据和文件。