Search code examples
pythoncurlvirtualenvpippycurl

SSL backend error when using OpenSSL


I was trying to install pycurl in a virtualenv using pip and I got this error

ImportError: pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)

I read some documentation saying that "To fix this, you need to tell setup.py what SSL backend is used" (source) although I am not sure how to do this since I installed pycurl using pip.

How can I specify the SSL backend when installing pycurl with pip?

Thanks


Solution

  • for most people

    After reading their INSTALLATION file, I was able to solve my problem by setting an environment variable and did a reinstall

    # remove existing `pycurl` installation 
    pip uninstall pycurl
    
    # export variable with your link-time ssl backend (which is openssl above)
    export PYCURL_SSL_LIBRARY=openssl
    
    # then, re-install `pycurl` with **no cache**
    pip install pycurl --no-cache-dir
    

    There could be other solution out there but this works perfectly for me on a virtualenv and pip installation.

    Some people have a different error message complaining about nss instead of openssl

    ImportError: pycurl: libcurl link-time ssl backend (nss)

    (the key part is nss) so you have to do something different for this error message:

    pip uninstall pycurl
    pip install --no-cache-dir --compile --compile-options="--with-nss" pycurl