GnuPG主目录

3
以下是我一直在尝试的代码。
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是一个意外的关键字。请问有人能帮我解决这个问题吗?任何帮助都将不胜感激。

3个回答

1
你需要安装 gpg 程序并确保它在你的 PATH 中。或者在你的构造函数中提供 gpg 二进制文件的完整路径,例如:
gpg = gnupg.GPG(gnupghome='new', gpgbinary='C:\\path\\to\\GnuPG\\pub\\gpg.exe')

同时查看部署要求,了解更多关于python-gnupg包的信息。


请问您所说的“PATH”是什么,我该如何操作呢?我已经查看了部署要求并下载安装了gpg可执行文件。 - mounika
谢谢。它确实在某种程度上工作。我使用了以下代码行..code.. [gnupghome ='C:\ SAAS \ wew',gpgbinary ='C:\ SAAS \ gnupg-w32cli-1.4.1.exe'],现在这创建了一个wew文件夹。但是,控制台中什么也没有显示出来。我尝试使用pdb进行调试,但是当我在pdb中键入n时也没有任何反应。 - mounika

0

根据我的经验,主要原因是您的本地计算机或服务器没有安装gnupg软件包,因此您需要使用apt或其他软件包管理器进行安装。这可能会解决问题。


-1
在最新版本(2.2.0)的python-gnupg中(作为gnupg导入),gnupghome=homedir(密钥环等存储位置)。

还有一些其他的事情:
二进制文件(在Windows中,即exe文件)被定义为“binary”。
最好指定一个指纹,也许你的local.txt应该是一个字符串('local.txt'),而且我认为你正在使用saltycrane博客文章,这篇文章目前有点过时了。
因此,下面的代码应该可以工作(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

我猜你的代码只是默默地失败了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接