2 votes

Répertoire de base de GnuPG

Voici le code que j'ai essayé.

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)

Le message d'erreur généré est le suivant.

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

Je suis assez nouveau dans GnuPG et après avoir fait quelques recherches, j'ai essayé de remplacer gnupghome par homedir. Mais cela soulève une autre erreur que homedir est un mot-clé inattendu.quelqu'un peut il m'aider avec ce problème. Toute aide serait appréciée.

1voto

Grisha Levit Points 4729

Vous devez installer le gpg et assurez-vous qu'il est dans votre PATH . Ou fournir le chemin d'accès complet au fichier gpg dans votre constructeur, comme

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

Vérifiez également le Exigences de déploiement pour le python-gnupg pour plus d'informations.

0voto

kumarz Points 333

Dans la dernière version (2.2.0) de python-gnupg (importé comme gnupg),
gnupghome=homedir(où le trousseau de clés etc. est stocké).

Quelques autres choses :
Les binaires (sous Windows, il s'agit du fichier exe) sont définis comme des "binaires".
Le mieux est de spécifier une empreinte digitale, peut-être que votre local.txt devrait être une chaîne('local.txt'),
et je pense que vous utilisez le billet de blog de saltycrane qui est un peu dépassé pour le moment.
Le code ci-dessous devrait donc fonctionner (code OP remanié) :

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

Je pense que votre code est juste en train d'échouer silencieusement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X