¿Cómo configurar el directorio de inicio de GnuPG dentro del enlace Python de GnuPG?

Al intentar inicializar el enlace GnuPG en Python, aparece un mensaje de error

TypeError: __init__() got an unexpected keyword argument 'gnupghome' 

Este es el código que estoy ejecutando:

 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 

¿Qué estoy haciendo mal aquí?

Debe consultar la documentación de gnupg , ya que utiliza homedir en el lugar de gnupghome .

Por favor, siga la documentación que podría resolver sus problemas: gnupg documentación de python

Existen fonts diferenciales cuando se trata de documentación, algunas con homedir, otras con gnupghome. No sé cuándo la cambiaron ni por qué. Algún código trivial para proporcionar una solución a OP:

 import gnupg print gnupg.__version__ try: gpg = gnupg.GPG(gnupghome=homedir) except TypeError: gpg = gnupg.GPG(homedir=homedir) 

Por favor compare los dos siguientes tracebacks. Es el mismo código en ambos casos. En un caso, gnupg.GPG espera ‘homedir y en el otro caso’ gnupghome ‘. Estoy trabajando en un virtualenv y tengo dos distribuciones diferentes de gnupg. En el virtualenv python gnupg se instaló a través de pip:

virtualenv:

 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 "", line 1, in  TypeError: __init__() got an unexpected keyword argument 'gnupghome' 

global:

 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 "", line 1, in  TypeError: __init__() got an unexpected keyword argument 'homedir' 

Sin embargo, me preocupa la vieja versión gnupg en jessie. ¿Alguien puede elaborar sobre el asunto?

GnuPG (como herramienta de línea de comandos) conoce dos formas de especificar el directorio de inicio de GnuPG:

  1. Usando una variable de entorno:

     GPGHOME=C:\Users\samss\AppData\Roaming\gnupg gpg 
  2. Pasándolo como un parámetro (que también está disponible como parámetro homedir en el archivo de configuración):

     gpg --homedir=C:\Users\samss\AppData\Roaming\gnupg 

El enlace GnuPG Python permite que se pasen algunos parámetros durante la inicialización. Debido a la syntax de inicialización, es probable que haya mezclado esto con la versión de la variable de entorno para definir el directorio de inicio en la línea de comandos.

Una advertencia adicional: es probable que desee acceder al directorio principal de GnuPG de otro usuario del sistema. GnuPG es muy exigente con los permisos seguros. Para una máquina de desarrollo, podría estar bien usar el parámetro GnuPG --no-permission-warning y privilegios que permiten un acceso bastante amplio, pero es mejor comenzar con un enfoque limpio desde el inicio e inicializar un nuevo directorio inicial de GnuPG para su aplicación que Se puede restringir adecuadamente con respecto a los permisos.