Erreur de backend SSL lors de l'utilisation d'OpenSSL

87

J'essayais d'installer pycurl dans un virtualenv en utilisant pip et j'ai eu cette erreur

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

J'ai lu une documentation disant que "Pour résoudre ce problème, vous devez indiquer à setup.py quel backend SSL est utilisé" (source) bien que je ne sache pas comment faire cela puisque j'ai installé pycurl en utilisant pip.

Comment puis-je spécifier le backend SSL lors de l'installation de pycurl avec pip?

Merci

helloworld2013
la source
1
Quel est votre système d'exploitation?
Evgenii

Réponses:

121

Après avoir lu leur fichier INSTALLATION, j'ai pu résoudre mon problème en définissant une variable d'environnement et j'ai réinstallé

  • supprimer l' pycurlinstallation existante

    pip uninstall pycurl

  • exportez la variable avec votre backend SSL au moment du lien (qui est openssl ci-dessus)

    export PYCURL_SSL_LIBRARY=openssl

  • puis, réinstallez pycurlavec aucun cache

    pip install pycurl --no-cache-dir

Il pourrait y avoir une autre solution là-bas, mais cela fonctionne parfaitement pour moi sur une installation virtualenvet pip.

helloworld2013
la source
2
Merci, PYCURL_SSL_LIBRARY=opensslfonctionne parfaitement!
thnee
Pour les utilisateurs de mac os x : ne vous souvenez pas de l'utilisation set -x PYCURL_SSL_LIBRARY opensslau lieu de export PYCURL_SSL_LIBRARY=opensslsi vous utilisez la console poisson au lieu de bash .
Serge
13
pip install pycurl --no-cache-dir
Shuguang Yang
Merci. J'ai examiné un certain nombre de solutions potentielles à ce problème. Cette solution a fonctionné la première fois.
Matt Setter
exemple d'installation de virtualenv étape par étape yippeecode.com/view-code/343QWQT144/…
helloworld2013
77

La réponse de helloworld2013 est correcte, mais la clé correspond à la bibliothèque SSL attendue par pycurl. L'erreur sera quelque chose comme:

pycurl: le backend ssl link-time libcurl ( <library> ) est différent du backend ssl lors de la compilation ( <library> ou " none / other ")

Pour y remédier, vous devez utiliser la bibliothèque attendue par pycurl. Dans mon cas, mon erreur était " pycurl: le backend ssl link-time libcurl ( nss ) est différent du backend ssl à la compilation (openssl) ", donc mon correctif était:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
pip install pycurl
DrStrangepork
la source
1
Brillant . Cela devrait obtenir plus de votes. La réponse originale s'appliquait à certaines machines. Celui-ci est un moyen plus général de le résoudre en fonction de votre plate-forme.
Nishant
6
hmm cela n'a pas fonctionné pour moi sur un mac. Il semble que ce PYCURL_SSL_LIBRARYsoit complètement ignoré. Le backend ssl au moment de la compilation est toujours "(aucun / autre)" pour moi, même s'il echo PYCURL_SSL_LIBRARYdonne openssl.
Edward Newell
1
comme @EdwardNewell, ce correctif n'a pas fonctionné pour moi sur Scientific Linux (Rhel), bien que j'aie spécifié nss pour PYCURL_SSL_LIBRARY, le backend reste (aucun / autre)
Yondaime008
3
Sur Mac, j'ai supprimé pycurlet installé avec les drapeaux:pip install --global-option="--with-openssl" --global-option=build_ext --global-option="-L/usr/local/opt/openssl/lib" --global-option="-I/usr/local/opt/openssl/include" pycurl
eigenein
2
Cela a fonctionné mais uniquement avec les options suivantes: pip install pycurl --compile --no-cache-dirsur CentOS 7.3.
Robert Yi
51

Avec OSX 10.13, un openSSL installé par Brew et virtualenv, j'ai réussi avec:

workon ..your-environment-here..
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
export LDFLAGS=-L/usr/local/opt/openssl/lib;export CPPFLAGS=-I/usr/local/opt/openssl/include;pip install pycurl --compile --no-cache-dir
Michael Wilson
la source
4
Oui, sur MacOS 10.13.1 (High Sierra), ça a fait l'affaire! Merci beaucoup! Pour réinstaller openssl:brew reinstall openssl
Denis Arnaud
1
J'ai résolu mon problème avec. Merci :)
JeongjinKim
1
Correction du problème sur Mac OSX 10.13.4! Merci.
user1192748
1
Merci! J'ai également résolu mon problème. Mac OSX 10.13.4
Steven Church
2
Daryl désolé d'entendre ça! Cela a encore fonctionné pour moi sur Mojave, donc je ne suis pas sûr de ce qui se passe.
Michael Wilson
25

Avec pip 7.1, vous pouvez mettre les éléments suivants dans votre fichier d'exigences:

pycurl==7.19.5.1 --global-option="--with-nss"

Remplacez simplement nss par la bibliothèque backend ssl appropriée.

maharg101
la source
1
Cette solution est meilleure que d'exporter une variable et de la réinstaller car elle peut être partagée dans le fichier requirements.txt et ne doit pas être répétée par utilisateur.
dfarrell07
1
l'exportation n'a pas fonctionné pour moi sur CentOS 7. Mais la configuration de l'option globale a fonctionné. Merci!
Aaron Nguyen
J'ai dû combiner votre solution et celle de @Michael Wilson pour la faire fonctionner sous macOS. On dirait un problème de cryptographie - quelques discussions ici: github.com/pyca/cryptography/issues/3489
kip2
20

La méthode pour réparer le pycurl après la mise à jour de Mac OS High Sierra:

  1. Réinstaller les bibliothèques curl pour utiliser OpenSSL au lieu de SecureTransport

    brew install curl --with-openssl
    
  2. Installez pycurl avec un environnement et des chemins de construction corrects

    export PYCURL_SSL_LIBRARY=openssl
    pip uninstall pycurl 
    pip install --no-cache-dir --global-option=build_ext --global-option="-L/usr/local/opt/openssl/lib" --global-option="-I/usr/local/opt/openssl/include" --user pycurl
    
pâle
la source
2
A travaillé pour moi sur High Sierra (en utilisant un virtualenv).
djangoat
1
Oui! Voir aussi cet article cscheng.info/2018/01/26/…
somecallitblues
A travaillé pour moi sur High Sierra (en utilisant un virtualenv) mais j'ai dû supprimer le drapeau --user
user495732 Why Me
Merci beaucoup!! C'était incroyablement utile. Exécuter High Sierra et y passer quelques heures, c'est la seule solution qui a fonctionné :)
Alessandro
Quand j'ai utilisé le --userdrapeau comme ci-dessus, j'ai eu:Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
Daryl Spitzer
19

Cela a fonctionné pour moi:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
easy_install pycurl

Rien de tout cela n'a fonctionné pour moi (notez que la différence est simplement easy_install vs pip):

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl
#xor
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.19.3.1.tar.gz
#...
python setup.py --with-[nss|openssl|ssl|gnutls] install
JoelBondurant
la source
1
L' easy_installoption était la seule qui fonctionnait. Je ne comprends pas pourquoi c'est si compliqué. J'avais besoin export PYCURL_SSL_LIBRARY=openssl. Mon un a signalé "aucun / autre" pour la bibliothèque compilée.
CMCDragonkai
Je viens de rencontrer ce problème et cette solution était la seule qui fonctionnait pour moi.
Boudewijn Aasman
2
D'après mon expérience, pip ne supprime pas complètement l'ancienne version de pucurl installée avec le système d'exploitation (Centos7.2 dans mon cas). Pip n'a pas touché aux fichiers /usr/lib64/python2.7/site-packages/pycurl.so et egg-info de la version antérieure. Easy_install, d'autre part, les a effacés en plus de placer pycurl egg dans les packages de site.
sokhaty
Ugh, j'ai essayé tout ce qui précède et ça n'a pas fonctionné. Cela a fonctionné pour moi lorsque mon message d'erreur d'origine était `` ImportError: pycurl: le backend ssl link-time libcurl (openssl) est différent du backend ssl lors de la compilation (aucun / autre) ``
James McCormac
10

J'ai eu ce problème pendant des jours. Enfin, avec l'aide d'autres réponses ici (principalement celles d'Alexander Tyapkov), je l'ai fait fonctionner pour AWS Elastic Beanstalk.

Installation manuelle (connexion avec SSH):

sudo pip uninstall pycurl
curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
sudo pip install pycurl-7.43.0.tar.gz --global-option="--with-nss"

IMPORTANT: veuillez noter que vous devez vous assurer que vous utilisez la version actuelle de Python et PIP, sinon vous pourriez la compiler pour Python 2.x et utiliser la v3.x.

Installation automatique dans Elastic Beanstalk:

files:
  "/usr/local/share/pycurl-7.43.0.tar.gz" :
    mode: "000644"
    owner: root
    group: root
    source: https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz

commands:
  01_download_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'curl -O https://bootstrap.pypa.io/get-pip.py'
  02_install_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'python3 get-pip.py'
  03_pycurl_uninstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: '/usr/bin/yes | sudo pip uninstall pycurl'
  04_pycurl_download:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz'
  05_pycurl_reinstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'sudo pip install pycurl-7.43.0.tar.gz --global-option="--with-nss"'

container_commands:
  09_pycurl_reinstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    # the upgrade option is because it will run after PIP installs the requirements.txt file.
    # and it needs to be done with the virtual-env activated
    command: 'source /opt/python/run/venv/bin/activate && pip3 install /usr/local/share/pycurl-7.43.0.tar.gz --global-option="--with-nss" --upgrade'

J'ai eu ce problème car j'essayais de configurer Celery 4 avec Django 1.10 dans Elastic Beanstalk. Si tel est votre cas, j'ai écrit un article de blog complet à ce sujet .

Diego Jancic
la source
ugh merci. ce truc peut être ennuyeux, surtout parce que les fichiers de configuration eb semblent très inconstants et ne vous donnent jamais d'erreurs raisonnables (y compris des problèmes de formatage)
Ian
J'ai voté pour cette réponse car cela m'a beaucoup aidé à résoudre un problème similaire lors de l'installation de pycurl sur AWS: stackoverflow.com/questions/51019622/…
Greg Holst
8

Je suis sur CentOS 7. J'ai essayé tout ce qui précède et je n'ai rien pu faire fonctionner. Il s'avère que j'avais besoin de les exécuter en tant qu'utilisateur root. Donc, si vous rencontrez des problèmes, essayez l'une des solutions ci-dessus en tant qu'utilisateur root. À titre d'exemple, voici ce qui a fonctionné pour moi:

su -
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl

Bien sûr, toutes les clauses de non-responsabilité habituelles concernant l'exécution en tant qu'utilisateur root s'appliquent.

Remarque: [nss | openssl | ssl | gnutls] dans le code ci-dessus signifie en choisir un, et n'inclut pas les crochets ou les tuyaux. La personne qui a posé la question initiale aurait choisi openssl. Dans mon cas particulier, j'ai choisi nss. Votre message d'erreur devrait vous indiquer le choix à faire.

2019 Edit: Faire une sudo pip installpourrait causer un problème avec l'installation système de la machine de Python. Essayez peut-être de travailler dans un environnement virtuel Python et d'y installer les packages. Si cela ne fonctionne pas, l'astuce sudo dans ma réponse est probablement l'une des dernières options à considérer.

Alfonso
la source
5

Vous pouvez télécharger le fichier tar.gz ici . Puis extrayez-le dans un dossier. Vous y trouverez un fichier setup.py. Exécutez la commande là-bas que le site a mentionnée. Par exemple:

python setup.py --with-[ssl|gnutls|nss] install

Pour info: j'ai essayé d'installer pycurl sur mes fenêtres, mais je n'ai pas pu. Mais je l'ai fait sur mon Linux.

Sabuj Hassan
la source
merci pour la réponse, mais cela ne pourrait fonctionner pour moi que si je ne fais pas l'installation via virtualenv and pip
helloworld2013
@Sabuj pour installer pycurl sur Windows, utilisez l'un des installateurs fournis sur cet excellent site Web: lfd.uci.edu/~gohlke/pythonlibs/#pycurl
Adam
4

J'exécute ceci sur OS X et certaines des solutions ci-dessus ne fonctionnaient pas. Semblable au commentaire d'Edward Newell, la PYCURL_SSL_LIBRARYvariable semble avoir été complètement ignorée.
Une lecture plus approfondie du document d'installation de PycURL a révélé ce qui suit:

pip peut réinstaller le paquet qu'il a précédemment compilé au lieu de recompiler pycurl avec les options nouvellement spécifiées

Par conséquent, j'ai dû le forcer à compiler avec:

pip install --compile pycurl

Cela fonctionne sur un certain nombre de cas. Cependant, j'ai rencontré quelques systèmes qui ont continué à ignorer la variable, donc, comme la réponse de maharg101 , j'ai eu recours aux options d'installation qui, via pip, peuvent être définies comme suit :

pip install pycurl --global-option="--with-[ssl|gnutls|nss]"

où vous sélectionnez l'une des trois options entre crochets. Notez que l'option disponible est sslet non openssl . Si vous spécifiez, --with-opensslvous obtiendrez une erreur. Notez également que si vous dérangez la PYCURL_SSL_LIBRARYvariable et que vous la basculez sur des valeurs géniales pour voir ce qui se passerait, cette dernière commande la capturera certainement et enverra une erreur si la valeur est définie mais non valide.

Gunga
la source
1
désinstallez d'abord pycurl et faites des pip install pycurl --global-option="--with-nss"travaux pour moi. Pour mémoire, mon erreur estImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)
ahyong
Merci @ahyong, le truc de l'option globale a fonctionné pour moi, même si j'ai essayé lors de l'installation à partir de tar, cela a fonctionné avec pip mais pas avec setup.py bizarre ...
Yondaime008
4

Réinstallation de curl

J'ai essayé toutes les suggestions de cette discussion mais personne n'a fonctionné pour moi. Comme solution, j'ai réinstallé curl et curlib. Après cela, j'ai pu installer pycurl avec le support ssl dans l'environnement.

Au début:

'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'

Partie 1: Ré / Installation avec pip

Tout d'abord, j'ai supprimé pycurl de virtualenv en utilisant pip comme cela a été suggéré dans les réponses précédentes:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"

L'idée ici est que le package a été mis en cache et que nous le réinstallons simplement avec l'option openssl.

J'ai également essayé de recompiler pycurl avec pip en utilisant:

pip install pycurl --compile pycurl --no-cache

.. mais a eu la même erreur après l'exécution:

python
import pycurl
pycurl.version

ImportError: pycurl: le backend ssl link-time libcurl ( gnutls ) est différent du backend ssl lors de la compilation ( openssl )

Partie 2. Installation depuis tar

Après que la méthode précédente n'a pas fonctionné, j'ai décidé d'installer pycurl à partir de tar avec:

curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
sudo tar -xzvf pycurl-7.43.0.tar.gz
cd pycurl-7.43.0/
sudo python setup.py --with-ssl install

Il a installé pycurl dans le monde entier mais pas dans virtualenv. Je n'ai pas non plus vérifié s'il était installé avec le support SSL ou non, mais je pense que toujours sans SSL.

Partie 3. Réinstallation de curl et curllib

Enfin, j'ai compris que pycurl ne s'installe pas normalement dans l'environnement car global curl et libcurl sont compilés avec gnutls.

Avant de commencer, vérifiez-le avec:

curl-config --configure

L'une des lignes de sortie sera

'--without-ssl' '--with-gnutls'

Pour le recompiler:

Supprimez d'abord curl:

sudo apt-get purge curl

Installez toutes les dépendances de construction nécessaires pour curl

sudo apt-get build-dep curl

Obtenir la dernière version (au 20 décembre 2016) libcurl

mkdir ~/curl
wget http://curl.haxx.se/download/curl-7.51.0.tar.bz2
tar -xvjf curl-7.51.0.tar.bz2
cd curl-7.51.0

Les étapes habituelles pour créer une application à partir de la source

./configure
./make
 sudo make install

Si openssl est correctement installé, configure le trouvera automatiquement. La sortie sera:

curl version: 7.51.0
Configuration de l'hôte: x86_64-pc-linux-gnu
Préfixe d'installation: / usr / local
Compilateur: gcc
SSL support: activé (OpenSSL) ...

Résolvez tous les problèmes de caches d'emplacement de bibliothèque de niveau C ("cache de bibliothèque partagée")

sudo ldconfig

Maintenant, essayez de réinstaller pycurl dans l'environnement:

curl -O https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz
pip install pycurl-7.43.0.tar.gz --global-option="--with-openssl"

Le résultat devrait être:

python
import pycurl
pycurl.version

'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'

Alexandre Tyapkov
la source
3

Pour tous ceux qui ont des problèmes avec PyCharm CE sur macOS Mojave, voici comment je l'ai fait fonctionner dans venv:

  • spécifier la version: 7.43.0.1
  • Options: --install-option = - with-openssl --install-option = - openssl-dir = / usr / local / opt / openssl

Capture d'écran de l'interpréteur du projet PyCharm

fabe
la source
1
Pour moi sur macOS Mojave, j'avais besoin d'exécuter brew reinstall openssl, puis pip install pycurl == 7.43.0.1 --install-option = - with-openssl --install-option = - openssl-dir = / usr / local / opt / openssl
user495732 Why Me
2

Cela a fonctionné pour moi:

pip install --compile --install-option = "- with-openssl" pycurl

user10148784
la source
2

J'ai tout essayé ici sur macOS 10.13 sans succès. Ensuite, j'ai trouvé https://gist.github.com/webinista/b4b6a4cf8f158431b2c5134630c2cbfe qui a fonctionné:

brew install curl --with-openssl
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
export LDFLAGS=-L/usr/local/opt/openssl/lib;export CPPFLAGS=-I/usr/local/opt/openssl/include; pip install pycurl --compile --no-cache-dir

Cela a fonctionné pour moi à la fois lorsque je n'utilise pas de virtualenv et dans un virtualenv.

Daryl Spitzer
la source
1

Je ne sais pas si cela est dû à l'exécution dans un virtualenv, mais sur CentOS 7, ces solutions ne fonctionnaient pas pour moi; les objets compilés étaient toujours extraits du répertoire de cache lorsque je réinstallais. Si vous rencontrez le même problème après avoir essayé d'autres solutions ici, essayez ce qui suit:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl --no-cache-dir
Robert Kelly
la source
Même chose ici, sur CentOS 7, cela ne fonctionnait pas jusqu'à ce que j'aie ajouté l' --no-cahe-diroption. Je veux juste mentionner en outre qu'il n'a réussi à fonctionner que sous root avec su -comme @alfonso l'a suggéré. Faire sudo pip3 ...n'était pas assez bien. Probablement nécessaire pour que la variable d'environnement soit captée.
Nagev
1

Erreur:

ImportError: pycurl: le backend ssl link-time libcurl (openssl) est différent du backend ssl lors de la compilation (aucun / autre)

Cela a fonctionné pour moi, Mac 10.13, python 3.5, l'importation pycurl a fonctionné après l'installation comme ceci

pip3 uninstall pycurl;

pip3 install --compile --install-option="--with-openssl" pycurl
Vairav
la source
Cela a fonctionné pour moi aussi sur Python 2.7.10 sur High Sierra.
skyler
1

Après avoir été coincé là-dessus pendant une longue période, j'ai découvert qu'Apple avait cessé d'inclure les en-têtes OpenSSL depuis OS X 10.11 El Capitan. comment réparer?

1) brew install openssl

2) echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile (or .zshrc for zsh, etc)

3) pip uninstall pycurl

4) pip install --install-option="--with-openssl" --install-option="--openssl-dir=/usr/local/opt/openssl" pycurl
Ours blanc
la source
Bien sûr, il m'a fallu beaucoup de temps pour le faire fonctionner, assez ennuyeux je dois dire. S'amuser!!
Whitebear
1

Même problème sur amazonlinux - résolu
J'ai eu ce problème lors de la création d'une image docker basée sur amazonlinux, de l'installation de python3.7 et de l'ajout du module pycurl. Tous les autres modules python ont été installés correctement à l'exception de pycurl. Après avoir essayé plusieurs des solutions proposées dans les discussions liées à ce problème, j'ai finalement résolu mon problème en utilisant les commandes suivantes pour l'installation de toutes les pièces.
yum -y install python3 python3-devel gcc libcurl-devel aws-cli openssl-static.x86_64
puis installé d'autres modules comme psycopg2-binary, requests, certifi en utilisant:
pip3 install --user --no-cache-dir -r requirements.txt

et enfin installé le module pycurl en utilisant:

pip3 install --user --global-option="--with-openssl" --no-cache-dir pycurl
et en passant ici l'option globale openssl. L'installation de la bibliothèque statique openssl-static.x86_64 a résolu le problème dans mon cas en utilisant l'option globale utilisée par la deuxième commande pip3.

Rimetnac
la source
0

Pour python 2.7

sudo apt-get install build-essential libssl-dev libffi-dev python-dev

Pour python 3.5, installez également le suivant:

sudo apt-get install python3.5-dev

Téléchargez la dernière source pycurl-7.43.0.tar.gz (md5) depuis pypi https://pypi.python.org/pypi/pycurl/7.43.0#downloads et exécutez la commande suivante:

python setup.py --with-openssl install

Vous pouvez également le faire dans un environnement python:

(test_env)user@pc:~/Downloads/pycurl-7.43.0$ python setup.py --with-openssl install
Andrew Nodermann
la source
0
pip install -U pip

if [ "$(curl --version | grep NSS 2>/dev/null)" ]; then
    pip install --compile --install-option="--with-nss" pycurl
else
    pip install --compile --install-option="--with-openssl" pycurl
fi
Sanket Jagtap
la source
0

J'ai rencontré ce problème et la réponse de Sanket Jagtap a fonctionné pour moi. J'ai essayé la réponse avec le plus de votes mais cela n'a pas fonctionné.

Mon ancienne version openssl est 1.0.1t, je pense que réinstaller openssl peut résoudre ce problème.

--- pycurl's openssl backend time....

J'ai reconstruit le dernier openssl et essayé cette réponse. Regarde ça.

pip install --compile --install-option="--with-openssl" pycurl

Cela a fonctionné pour moi.

je recommande que nous devrions réinstaller notre openssl pour essayer ..

Déchue
la source
0

La suite a fonctionné pour moi avec Python3.6

MacOS High-Sierra

sudo pip3 uninstall pycurl
sudo pip3 install --compile --install-option="--with-openssl" pycurl 

CentOS 7

sudo pip3 uninstall pycurl
sudo pip3 install --compile --install-option="--with-nss" pycurl
Samuel
la source
0

FWIW, j'ai rencontré de nombreux problèmes pour que cela fonctionne via AWS Elastic Beanstalk et j'ai finalement pu le faire fonctionner avec:

packages:
  yum:
    openssl-devel: []
    libcurl-devel: []

container_commands:
  # Reinstall PyCurl with correct ssl backend
  05_reinstall_pycurl:
    command: |
      pip install --upgrade pip
      pip uninstall -y pycurl
      pip install --global-option='--with-openssl' pycurl
Sean Chon
la source
0

Récemment, lors de la mise à niveau d'un projet Django, j'ai eu l'erreur similaire. Mais cette fois, la définition de la variable d'environnement n'a pas fonctionné. J'ai donc dû définir à la fois la variable d'environnement export PYCURL_SSL_LIBRARY=opensslet passer le drapeau --global-option="with-openssl".

La réponse originale a été publiée sur cette page

helloworld2013
la source
-1
export CPPFLAGS=-I/usr/local/opt/openssl/include
export LDFLAGS=-L/usr/local/opt/openssl/lib

pip install pycurl --global-option="--with-openssl"
Evgenii
la source