Hi all,
I am getting the error
twisted.web._newclient.ResponseNeverReceived: [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]>]
described on mpcontribs-client · PyPI despite having set the correct environment variable (and having verified that it is indeed set using os.getenv).
I also tried getting a new API key by setting up a new account on MPContribs but no success.
Is this just me or does anyone have an idea how to fix it?
Thanks,
Josua
You are using the API key from https://contribs.materialsproject.org/ and not your regular API key, right?
Can you post code to minimally reproduce your error?
I am able to
from mpcontribs.client import Client
client = Client()
dir(client)
without issue.
There seems to be discussion of your error in the link you gave relating to properly setting a SSL_CERT_FILE
environment variable. However, this variable is not set on my system. Perphaps this error is operating-system specific? What is your setup? I am, for example, using a conda Python environment on MacOS 10.15.
Hi Donny,
thanks very much for the quick reply!
Yes, I am using the contribs API key you get when logging in at MPcontribs and hovering over the user icon (I think it’s about double the length of the MP API key).
Here is part of my code
from pymatgen.ext.matproj import MPRester
from mpcontribs.client import Client
(further imports)
class MPRequests:
def __init__(self, api_key, contribs_api_key=None, include_non_icsd=True):
self.api_key = api_key
self.contribs_api_key = contribs_api_key
self.include_non_icsd = include_non_icsd
self.mpr = MPRester(self.api_key)
self.contribs_client = Client(apikey=contribs_api_key)
def add_transport_properties(self):
name = "carrier_transport"
resp = self.contribs_client.contributions.get_entries(
project=name, identifier="mp-1992", _fields=["id"]
).result()
return resp
I am using a Portable Python environment on Win 10. The “normal” MP rester and pymatgen work just fine.
Hi Josua,
the SSL errors are related to issues with certificate locations/installations on Windows. Setting SSL_CERT_FILE
to $(python -m certifi)
usually takes care of it on Windows. There’s some info about python on Windows and setting environment variables here. I unfortunately don’t have access to a Windows machine to try and reproduce this for your specific environment but I’m testing the client initialization as part of MPContribs Github actions before releasing to PyPI. The latest test for 3.10.1 seems to work fine. Which version of the mpcontribs-client are you using?
PS: I recommend using the MPCONTRIBS_API_KEY
environment variable to set the API key instead of the keyword argument in the constructor.
HTH
Patrick
Hi Patrick,
thanks a lot! Unfortunately, for some reason setting the environment variable did not do the trick. Doesn’t matter which way I tried to set it. I am using mpcontribs-client 3.10.1 and also tried unstalling and re-installing it.
This may very well have to do with my somewhat odd environment on Windows. For now, we can avoid this issue by downloading the data we need locally and using that. Maybe we should switch to a Linux-based workstation at some point anyway.
Thanks a lot anyway for your help!
Josua