2017-11-09 16 views
1

Windows 7をPython 3.6.1でAnacondaで実行しています。 pip install gnupgを使って、gnupgのpythonパッケージをインストールしました。Python gnupgパッケージを使用して、 "Homedir '' C:/ Users/... 'に読み取り/書き込みアクセス権が必要です。"

ftp://ftp.gnupg.org/gcrypt/binary/からgnupg Windows実行ファイル2.1.23をダウンロードしました。

次の2つの行のいずれかを使用してコードを実行すると、次のエラーで失敗します。

import gnupg 

gpg = gnupg.GPG(binary='C:/Program Files (x86)/GnuPG/bin/gpg.exe', 
       homedir='C:/Users/Alex/Desktop/SFTP Connection') 

# gpg = gnupg.GPG(binary='C:/Program Files (x86)/GnuPG/bin/gpg.exe') 

しかし、2行のいずれかでPythonコードを実行すると失敗します。

import gnupg 
# gpg = gnupg.GPG(homedir='C:/Program Files (x86)/GnuPG') 
gpg = gnupg.GPG(homedir='C:/Program Files (x86)/GnuPG/bin') 

--------------------------------------------------------------------------- 
AssertionError       Traceback (most recent call last) 
C:\ProgramData\Anaconda3\lib\site-packages\gnupg\_meta.py in _homedir_setter(self, directory) 
    434     assert _util._has_readwrite(hd), \ 
--> 435      "Homedir '%s' needs read/write permissions" % hd 
    436    except AssertionError as ae: 

AssertionError: Homedir ''C:/Users/Alex/Desktop/SFTP Connection'' needs read/write permissions 

During handling of the above exception, another exception occurred: 

RuntimeError        Traceback (most recent call last) 
<ipython-input-4-ae272cb064fb> in <module>() 
     1 gpg = gnupg.GPG(binary='C:/Program Files (x86)/GnuPG/bin/gpg.exe', 
----> 2    homedir='C:/Users/Alex/Desktop/SFTP Connection') 

C:\ProgramData\Anaconda3\lib\site-packages\gnupg\gnupg.py in __init__(self, binary, homedir, verbose, use_agent, keyring, secring, ignore_homedir_permissions, options) 
    123    verbose=verbose, 
    124    use_agent=use_agent, 
--> 125    ignore_homedir_permissions=ignore_homedir_permissions, 
    126  ) 
    127 

C:\ProgramData\Anaconda3\lib\site-packages\gnupg\_meta.py in __init__(self, binary, home, keyring, secring, use_agent, default_preference_list, ignore_homedir_permissions, verbose, options) 
    181   self.ignore_homedir_permissions = ignore_homedir_permissions 
    182   self.binary = _util._find_binary(binary) 
--> 183   self.homedir = os.path.expanduser(home) if home else _util._conf 
    184   pub = _parsers._fix_unsafe(keyring) if keyring else 'pubring.gpg' 
    185   sec = _parsers._fix_unsafe(secring) if secring else 'secring.gpg' 

C:\ProgramData\Anaconda3\lib\site-packages\gnupg\_util.py in __set__(self, obj, value) 
    763    self.fset(obj, value) 
    764   else: 
--> 765    getattr(obj, self.fset.__name__)(value) 
    766 
    767  def __delete__(self, obj): 

C:\ProgramData\Anaconda3\lib\site-packages\gnupg\_meta.py in _homedir_setter(self, directory) 
    438     log.debug("GPGBase.homedir.setter(): %s" % msg) 
    439     log.debug(str(ae)) 
--> 440     raise RuntimeError(str(ae)) 
    441    else: 
    442     log.info("Setting homedir to '%s'" % hd) 

RuntimeError: Homedir ''C:/Users/Alex/Desktop/SFTP Connection'' needs read/write permissions 

私は次の2つのコマンドを実行して、フォルダに読み取りと書き込みのアクセス権があることを確認しました。

>>> os.access('C:/Users/Alex/Desktop/SFTP Connection', os.W_OK) 
True 
>>> os.access('C:/Users/Alex/Desktop/SFTP Connection', os.R_OK) 
True 
>>> 

答えて

2

新しいアクセス許可のエラーに関しては、実際にはgnupgのバグだと思います。私はhave submitted a patchです。

+0

問題を解決してくれてありがとう。私は自分のシステムに何か問題があると思った。 –

+0

あなたはコミットを10時間前に提出していますが、まだ更新されていません。これまでにあなたが提出したコミットもありますか? –

+0

パッチを適用するか、問題のファイルを自分のマシンで修正して試してみることができます。 – georgexsh

2

GnuPGのホームディレクトリには、キーリングと情報が格納されています。この設定変数を使用して、Pythonモジュールがバイナリを検索する場所を判断することはできません。実際には、このは決してをバイナリが格納されている場所に設定する必要があります(とにかく、あなたのプログラムファイルディレクトリには置かないでください)。代わりに

、あなたの%PATH環境変数にディレクトリを追加したり、バイナリの絶対パス含まれている必要がありbinary変数、使用:Python module's documentationから

gpg = gnupg.GPG(binary='C:/Program Files (x86)/GnuPG/bin/gpg.exe') 

を:

binarystr ) - GnuPGバイナリ実行ファイルの名前。絶対パスが指定されていない場合は、環境変数$PATHが実行可能ファイルを検索され、ユーザーの実際のuid/gidに十分な権限があることが確認されます。

homedirstr) - パブリックキーリングとプライベートキーリングを含むディレクトリへのフルパス名。デフォルトはGnuPGのデフォルト値です。

+0

あなたの答えに感謝します。正しいバイナリファイルを指定した後に別のエラーが出ます。これは、 '私は読み書きの許可が必要です 'というキーを使ってプログラムを実行しているディレクトリです。私はそれが両方を持っていることを確認した。 –

+0

私は新しい問題を示すために上記の質問を編集しました。 –

関連する問題