如何在gnupgpython绑定中设置GnuPG主目录?
在Python中尝试初始化GnuPG绑定时,我收到一条错误消息如何在gnupgpython绑定中设置GnuPG主目录?,python,gnupg,Python,Gnupg,在Python中尝试初始化GnuPG绑定时,我收到一条错误消息 TypeError: __init__() got an unexpected keyword argument 'gnupghome' 这是我正在运行的代码: import gnupg gpg = gnupg.GPG(gnupghome='C:\Users\samss\AppData\Roaming\gnupg') input_data = gpg.gen_key_input(key_type="RSA",
TypeError: __init__() got an unexpected keyword argument 'gnupghome'
这是我正在运行的代码:
import gnupg
gpg = gnupg.GPG(gnupghome='C:\Users\samss\AppData\Roaming\gnupg')
input_data = gpg.gen_key_input(key_type="RSA",
key_length=1024,
passphrase='n0sm@sy0')
key =gpg.gen_key(input_data)
print key
我在这里做错了什么?您应该参考
gnupg
文档,因为它在gnupghome
处使用了homedir
请遵循文档,它可能会解决您的问题:GnuPG(作为命令行工具)知道两种指定GnuPG主目录的方法:
GPGHOME=C:\Users\samss\AppData\Roaming\gnupg gpg
homedir
参数提供):
另外一个警告:您可能想访问另一个系统用户的GnuPG主目录。GnuPG对安全权限非常挑剔。对于开发机器,可以使用GnuPG参数
——无权限警告和允许相当广泛访问的特权,但是最好从一开始就用一种干净的方法开始,为您的应用程序初始化一个新的GnuPG主目录,该目录可以适当地限制权限。当涉及到文档时,有不同的网络来源,有些是homedir,有些是gnupghome。我不知道他们是什么时候改变的,也不知道为什么。
提供OP解决方案的一些简单代码:
import gnupg
print gnupg.__version__
try:
gpg = gnupg.GPG(gnupghome=homedir)
except TypeError:
gpg = gnupg.GPG(homedir=homedir)
请比较以下两个回溯。这两种情况下的代码相同。在一种情况下,gnupg.GPG预期为“homedir”,在另一种情况下为“gnupghome”。
我在virtualenv中工作,有两个不同的gnupg发行版。
在virtualenv python中,gnupg是通过pip安装的:
虚拟电视:
Python 2.7.9 (default, Mar 1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gnupg
>>> gnupg.__version__
'2.0.2'
>>> homedir=''
>>> gpg = gnupg.GPG(homedir=homedir)
>>> gpg = gnupg.GPG(gnupghome=homedir)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'gnupghome'
Python 2.7.9(默认,2015年3月1日12:57:24)
[GCC 4.9.2]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>进口gnupg
>>>gnupg.\uuuu版本__
'2.0.2'
>>>homedir=''
>>>gpg=gnupg.gpg(homedir=homedir)
>>>gpg=gnupg.gpg(gnupghome=homedir)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:\uuuu init\uuuuu()获取了意外的关键字参数“gnupghome”
全球:
Python 2.7.9 (default, Mar 1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gnupg
>>> gnupg.__version__
'0.3.6'
>>> homedir=''
>>> gpg = gnupg.GPG(gnupghome=homedir)
>>> gpg = gnupg.GPG(homedir=homedir)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'homedir'
Python 2.7.9(默认,2015年3月1日12:57:24)
[GCC 4.9.2]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>进口gnupg
>>>gnupg.\uuuu版本__
'0.3.6'
>>>homedir=''
>>>gpg=gnupg.gpg(gnupghome=homedir)
>>>gpg=gnupg.gpg(homedir=homedir)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:\uuuu init\uuuuuuuuu()获取了意外的关键字参数“homedir”
不过,我对杰西的老版gnupg感到担忧。有人能详细说明这件事吗 python gnupg模块至少有3个不同版本。其中至少有2人处于pip状态
如果执行pip安装gnupg
,则会得到使用homedir参数的旧模块
如果您执行了pip安装python gnupg
,您将获得一个更新的模块。在本例中,您正在阅读的是该模块的文档。公平地说,较旧版本确实使用了gnupghome
及其在较旧版本的文档中。在升级一个较旧的脚本设置GNUPGHOME
env时,我也受到了这一点的影响。变量制造问题。。。(Windows操作系统)。实际上,我认为他们甚至将更改向后移植并重新发布。当我卸载/重新安装GNUPG2.3.1时,错误突然出现。疯狂!无论如何,这应该被标记为答案。
Python 2.7.9 (default, Mar 1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gnupg
>>> gnupg.__version__
'0.3.6'
>>> homedir=''
>>> gpg = gnupg.GPG(gnupghome=homedir)
>>> gpg = gnupg.GPG(homedir=homedir)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() got an unexpected keyword argument 'homedir'