2015-04-28 1 views
0

Le module chembl_webresource_client.new_client (version 0.8.5) disponible auprès de pypi, est une base de données client for accessing the new web service API of the ChEMBL. Il utilise urllib3 qui est broken for a while en python 2.7.9, en raison du sslwrap manquant dans le module ssl intégré. Si je tente d'importer le module:Module chembl_webresource_client.new_client échoue parce que ssl cassé dans urllib3 sous python 2.7.9

from chembl_webresource_client.new_client import new_client 

La trace de la pile ressemble à ceci:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/chembl_webresource_client/new_client.py", line 63, in <module> 
    new_client = client_from_url(Settings.Instance().NEW_CLIENT_URL + '/spore') 
    File "/usr/lib/python2.7/site-packages/chembl_webresource_client/new_client.py", line 27, in client_from_url 
    res = requests.get(url) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 65, in get 
    return request('get', url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/api.py", line 49, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 461, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 370, in send 
    timeout=timeout 
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 544, in urlopen 
    body=body, headers=headers) 
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 341, in _make_request 
    self._validate_conn(conn) 
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 762, in _validate_conn 
    conn.connect() 
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connection.py", line 238, in connect 
    ssl_version=resolved_ssl_version) 
    File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py", line 256, in ssl_wrap_socket 
    return context.wrap_socket(sock, server_hostname=server_hostname) 
    File "/usr/lib/python2.7/ssl.py", line 350, in wrap_socket 
    _context=self) 
TypeError: __init__() got an unexpected keyword argument 'server_hostname' 

Enfin je pourrais résoudre ce problème, je vais poster la solution ci-dessous.

Répondre

1

D'abord, j'ai essayé d'utiliser le correctif de this thread, sans succès. Enfin de this answer j'ai découvert, que l'installation pyopenssl, ndg-httpsclient et pyasn1 est nécessaire pour résoudre le problème.

pip2 install pyopenssl 
pip2 install ndg-httpsclient 
pip2 install pyasn1 

et le module ChEMBL peut être importé:

from chembl_webresource_client.new_client import new_client