【发布时间】:2020-01-12 19:53:59
【问题描述】:
我刚刚开始涉足 Python,但我的第一个项目被困住了
我需要帮助来弄清楚 gpg。我一直在努力让 gpg 与 python 3.8.1 一起工作。如果在 Thonny Python 3.6.9 中运行代码运行就好了。
版本是 gpg (GnuPG) 2.2.4 libgcrypt 1.8.1 主目录:/home/bob/.gnupg gnupg:/usr/local/lib/python3.8/site-packages/gnupg
使用 Python 3.6.9 就可以了
#!/usr/bin/python3
from pathlib import Path
import gnupg
# My gpg keys home directory.
#gpg = gnupg.GPG(homedir='/home/bob/.gnupg')
gpg = gnupg.GPG(gnupghome='/home/bob/.gnupg')
local_path = Path("/home/bob")
src_dir = ("/home/bob/Tbox/Channels2.csv")
with open(src_dir, 'rb') as afile:
# text = afile.read()
status = gpg.encrypt_file(afile,
['bobh@gunas.co.uk'],
output='/home/bob/Tbox/Channels2.csv.gpg')
print('ok: ', status.ok)
print('status: ', status.status)
print('stderr: ', status.stderr)
SHELL OUTPUT
ok: True
status: encryption ok
stderr: [GNUPG:] KEY_CONSIDERED 4678A2C439E752DA3DAE2EBA7357BB95381CD73 0
[GNUPG:] KEY_CONSIDERED 4678A2C439E752DA3DAE2EBA7357BB95381CD73 0
[GNUPG:] ENCRYPTION_COMPLIANCE_MODE 23
[GNUPG:] BEGIN_ENCRYPTION 2 9
[GNUPG:] END_ENCRYPTION
但是,如果我在 Thonny Python 3.8.1 中运行代码,我不会在 Shell 中使用任何错误消息
#!/usr/bin/python3
from pathlib import Path
import gnupg
# My gpg keys home directory.
gpg = gnupg.GPG(homedir='/home/bob/.gnupg')
#gpg = gnupg.GPG(gnupghome='/home/bob/.gnupg')
local_path = Path("/home/bob")
backup_dir = Path("/home/bob/Tbox/tbackup-test")
src_dir = ("/home/bob/Tbox/Channels2.csv")
with open(src_dir, 'rb') as afile:
text = afile.read()
# status = gpg.encrypt_file(text,
status = gpg.encrypt(afile,
['bobh@gunas.co.uk'],
output='/home/bob/Tbox/Channels2.csv.gpg')
print('ok: ', status.ok)
print('status: ', status.status)
print('stderr: ', status.stderr)
SHELL OUTPUT
ok: False
status: None
stderr: gpg: Sorry, no terminal at all requested - can't get input
我尝试将 no-tty 行添加到 gpg.conf 文件中,但这没有帮助。
我尝试了一些网络示例,但很高兴,我发现的一个问题是与 gpg 和单词 Context (如 c = gpg.core.Context(armor=True) error AttributeError: 'GPG'对象没有“核心”属性。
【问题讨论】:
标签: gnupg python-3.8