2016-01-11 11 views
6

問題が発生している環境:Windows10上のPython 2.7.11(最新のパッチが適用されています)。 Pythonはmsi経由でインストールされます。私は設定でPATHの設定を確認して、それはc:\ Python27に設定されています。 Windows上のimapclientエラー

この

は、Mac上で動作します:

from imapclient import IMAPClient 

IMAPClient("imap-mail.outlook.com", use_uid=True, ssl=(True)) 

しかし、Windows上で、そのようなbarfs場合:

Traceback (most recent call last): 
    File "test_outlook_imap.py", line 3, in <module> 
    IMAPClient("imap-mail.outlook.com", use_uid=True, ssl=(True)) 
    File "C:\Python27\lib\site-packages\imapclient\imapclient.py", line 152, in  __init__ 
    self._imap = self._create_IMAP4() 
    File "C:\Python27\lib\site-packages\imapclient\imapclient.py", line 164, in _create_IMAP4 
    self._timeout) 
    File "C:\Python27\lib\site-packages\imapclient\tls.py", line 153, in __init__ 
    imaplib.IMAP4.__init__(self, host, port) 
    File "C:\Python27\lib\imaplib.py", line 173, in __init__ 
    self.open(host, port) 
    File "C:\Python27\lib\site-packages\imapclient\tls.py", line 159, in open 
    self.sock = wrap_socket(sock, self.ssl_context, host) 
    File "C:\Python27\lib\site-packages\imapclient\tls.py", line 126, in wrap_socket 
    ssl_context = create_default_context() 
    File "C:\Python27\lib\site-packages\imapclient\tls.py", line 109, in  create_default_context 
    context.load_verify_locations(cadata=certs) 
    File "C:\Python27\lib\site-packages\backports\ssl\core.py", line 654, in  load_verify_locations 
    self._ctx.load_verify_locations(cafile, capath) 
    File "C:\Python27\lib\site-packages\OpenSSL\SSL.py", line 528, in load_verify_locations 
    _raise_current_error() 
    File "C:\Python27\lib\site-packages\OpenSSL\_util.py", line 48, in  exception_from_error_queue 
    raise exception_type(errors) 
OpenSSL.SSL.Error: [] 

が、これは証明書チェーンのウィンドウの取り扱いをどうしますか?

なお、Outlookドメインの代わりにimap.gmail.comについても同じことが行われます。

+0

backport.sslと関係がある可能性があります - https://github.com/alekstorm/backports.ssl/issues –

+0

実際のエラーメッセージは掲載していません。 – Ben

+0

ベン、 "OpenSSL.SSL.Error"で終わるところにペーストしたものはエラーメッセージではありませんか? –

答えて

7

これは最終的な回答ではありませんが、私が見つけた問題はimapclientをアンインストールして古いバージョンをインストールすることです。バージョン0.13(と0.11)は私のために働いていましたが、1.0.1にアップグレードした後、同じエラーメッセージが表示されました。から、

pip install imapclient==0.13

をimapclientのバージョンを確認するには:

pip uninstall imapclient

をピップと古い0.13バージョンをインストールするには、次のコマンドを実行します、ピップとimapclientをアンインストールし実行するには

対話シェルの実行:

>>> import imapclientここ>>> imapclient.__version__

+0

私は今あなたの本を読んでいます。そして、この問題は、1.5年後の2017年7月にもまだ続きます!あなたの解決策はそれを修正しました!再度、感謝します! –

3

は私のために働いたの回避策(Pythonの3.5、Windowsの10)です:

from backports import ssl 
from imapclient import IMAPClient 

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) 

server = IMAPClient('imap.gmail.com', ssl=True, ssl_context=context) 

上記のコードは、開発者の回避策here由来が、私は私だけcontextを定義する1行を必要としていました。それを機能させる。他のSSL/TLSプロトコルも指定できました。

関連する問題