以下是我一直在尝试的代码。
import os
import gnupg
import pdb
pdb.set_trace()
gpg = gnupg.GPG(gnupghome='new')
input_data = gpg.gen_key_input(
key_type="RSA",key_length=1024,
passphrase='mounika')
key = gpg.gen_key(input_data)
with open(local.txt,'rb')as f:
status=gpg.encrypt_file(f)
以下是生成的错误消息。
C:\Python27\python.exe C:/SAAS/encrypt.py
Traceback (most recent call last):
File "C:/SAAS/encrypt.py", line 4, in <module>
gpg = gnupg.GPG(gnupghome='new')
File "C:\Python27\lib\site-packages\gnupg.py", line 755, in __init__
raise OSError(msg)
OSError: Unable to run gpg - it may not be available.
Process finished with exit code 1
我是GnuPG的新手,在做了一些研究后,我尝试用homedir替换gnupghome。但这引发了另一个错误,即homedir是一个意想不到的关键字。可以通过soneone请帮我解决这个问题。任何帮助,将不胜感激。
答案 0 :(得分:1)
您需要安装gpg
计划,并确保该计划位于PATH
。或者在构造函数中提供gpg
二进制文件的完整路径,例如
gpg = gnupg.GPG(gnupghome='new', gpgbinary='C:\\path\\to\\GnuPG\\pub\\gpg.exe')
另请查看python-gnupg
包的Deployment Requirements了解详情。
答案 1 :(得分:0)
在python-gnupg的最新版本(2.2.0)中(作为gnupg导入),
gnupghome = homedir(存储密钥环等)。
其他一些事项:
二进制文件(在windows中,这是exe文件)被定义为'二进制'
最好指定指纹,也许你的local.txt应该是一个字符串('local.txt'),
而且我认为你正在使用saltycrane blog post,这一点现在有点过时了
所以下面应该有效(OP代码重构):
import os
import gnupg
import pdb
pdb.set_trace()
gpg = gnupg.GPG(homedir='new',
binary="C:/Progra~2/GNU/GnuPG/pub/gpg2.exe")
input_data = gpg.gen_key_input(
key_type="RSA",key_length=1024,
passphrase='mounika')
key = gpg.gen_key(input_data)
with open(local.txt,'rb')as f:
status=gpg.encrypt(f, key.fingerprint)
print status.ok
print status.status
print status.stderr
我认为你的代码只是默默无声。