GnuPG主目录

时间:2017-01-23 06:14:50

标签: gnupg home-directory

以下是我一直在尝试的代码。

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请帮我解决这个问题。任何帮助,将不胜感激。

2 个答案:

答案 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

我认为你的代码只是默默无声。