2017-01-23 135 views
1

以下是我一直在尝试的代码。GnuPG主目录

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是一个意想不到的关键字。可以帮助我解决这个问题。任何帮助,将不胜感激。

回答

0

您需要安装gpg程序并确保它在您的PATH中。或提供完整路径gpg二进制在你的构造,就像

gpg = gnupg.GPG(gnupghome='new', gpgbinary='C:\\path\\to\\GnuPG\\pub\\gpg.exe') 

检查也Deployment Requirementspython-gnupg包以获得更多信息。

+0

你可以告诉我你在说什么PATH,我该怎么做。我已经完成了部署要求并下载并安装了gpg可执行文件。 – mounika

+0

Thankyou ..它肯定在某种程度上工作。我已经使用了下面这行代码.. [gnupghome ='C:\ SAAS \ wew',gpgbinary ='C:\ SAAS \ gnupg-w32cli-1.4.1.exe'],现在创建一个wew文件夹。但之后没有任何东西显示在控制台中。我尝试使用pdb进行调试,但是当我在pdb中键入n时,在那里也没有发生任何事情。 – mounika

0

python-gnupg(导入为gnupg)的最新版本(2.2.0),
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 

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