SSL backend d'erreur lors de l'utilisation d'OpenSSL
J'ai essayé d'installer pycurl dans un virtualenv utilisation de 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 un peu de documentation en disant que "Pour résoudre ce problème, vous devez dire setup.py ce SSL backend est utilisé" (source) bien que je ne suis pas sûr de la façon de le faire depuis que j'ai installé pycurl utilisation de pip.
Comment puis-je spécifier le protocole SSL backend lors de l'installation de pycurl avec le pip?
Grâce
- Qu'est-ce que votre système d'exploitation?
Vous devez vous connecter pour publier un commentaire.
Après la lecture de leur fichier d'INSTALLATION, j'ai pu résoudre mon problème en définissant une variable d'environnement et fait une réinstallation
supprimer les
pycurl
installationpip uninstall pycurl
exportation variable avec votre lien-temps ssl backend (qui est openssl ci-dessus)
export PYCURL_SSL_LIBRARY=openssl
ensuite, re-installer
pycurl
avec pas de cachepip install pycurl --no-cache-dir
Il pourrait y avoir d'autre solution, mais cela fonctionne parfaitement pour moi sur un
virtualenv
etpip
installation.PYCURL_SSL_LIBRARY=openssl
fonctionne parfaitement!gnutls
à le faire fonctionnerset -x PYCURL_SSL_LIBRARY openssl
au lieu deexport PYCURL_SSL_LIBRARY=openssl
si vous utilisez poissons console au lieu de bash.helloworld2013 réponse est bonne, mais la clé est la mise en correspondance de la bibliothèque SSL qui pycurl attend. L'erreur sera quelque chose comme:
pycurl: libcurl lien-temps ssl backend (<bibliothèque>) est différente de la compilation ssl backend (<bibliothèque> ou "aucun/autre")
Pour résoudre ce problème, vous devez utiliser la bibliothèque pycurl attend. Dans mon cas, mon erreur a été "pycurl: libcurl lien-temps ssl backend (nss) est différente de la compilation ssl backend (openssl)", donc ma solution était:
PYCURL_SSL_LIBRARY
est complètement ignoré. Le moment de la compilation ssl backend est toujours "(aucun/autre)" pour moi, même siecho PYCURL_SSL_LIBRARY
donneopenssl
.pycurl
et 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
pip install pycurl --compile --no-cache-dir
sur CentOS 7.3.Avec OSX 10.13, un bistrot-installation d'openSSL, et virtualenv, j'ai eu du succès avec:
brew reinstall openssl
pip install pycurl --global-option="build_ext" --global-option="-I/usr/local/opt/openssl/include"
import pycurl
et a obtenu:ImportError: pycurl: libcurl link-time ssl backend (none/other) is different from compile-time ssl backend (openssl)
ImportError: pycurl: libcurl link-time ssl backend (none/other) is different from compile-time ssl backend (openssl)
après avoir essayé Kerim Gökarslan pep, la commande d'installation ci-dessus.Avec le pip 7.1 vous pouvez mettre ceci dans votre exigences fichier:
Il suffit de remplacer nss avec le ssl backend de la bibliothèque.
Cela a fonctionné pour moi:
Rien de tout cela a fonctionné pour moi (notez la différence est tout simplement easy_install vs pep):
easy_install
option est la seule qui a fonctionné. Je ne comprends pas pourquoi c'est si compliqué. J'avais besoin deexport PYCURL_SSL_LIBRARY=openssl
. Ma indiqué "aucun/autre" pour la compilation de la bibliothèque.La méthode pour résoudre le pycurl après Mac OS High Sierra mise à jour:
Réinstaller le curl bibliothèques à utiliser OpenSSL au lieu de SecureTransport
Installer pycurl avec un bon moment de la construction, de l'environnement et des chemins
--user
drapeau comme ci-dessus, j'ai eu:Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
--user
, il semblait réussir à l'installer. Mais quand je fais unimport pycurl
j'obtiens:ImportError: pycurl: libcurl link-time ssl backend (none/other) is different from compile-time ssl backend (openssl)
J'ai eu ce problème pendant des jours. Enfin, avec l'aide d'autres réponses ici (principalement Alexander Tyapkov s) je l'ai eu à travailler pour AWS Elastic Beanstalk.
Manuel d'installation (se connecter avec SSH):
IMPORTANT: Veuillez noter que vous devez vous assurer que vous utilisez la currect version de Python et de PIP, sinon vous risquez de le compiler pour Python 2.x et d'utilisation v3.x.
Auto-install dans Elastic Beanstalk:
J'ai eu ce problème parce que j'étais en train de configurer le Céleri 4 avec Django 1.10 Elastic Beanstalk. Si c'est votre cas, J'ai écrit un article complet à ce sujet.
Je suis sur CentOS 7. J'ai essayé tous les ci-dessus et ne pouvait pas trouver quelque chose à travailler. Il s'avère que j'nécessaires à l'exécution de ces en tant qu'utilisateur racine. Donc, si vous rencontrez des problèmes, essayez les solutions ci-dessus en tant qu'utilisateur racine. Comme un exemple, voici ce qui a fonctionné pour moi:
Bien sûr, tous les avertissements habituels sur l'exécution en tant qu'utilisateur racine appliquer.
Note: [nss|openssl|ssl|tls] dans le code ci-dessus pour en choisir un, et ne comprennent pas les crochets ou les tuyaux. La personne qui a posé la question d'origine aurait choisi d'openssl. Dans mon cas particulier, j'ai choisi nss. Votre message d'erreur devrait vous dire quel choix à faire.
Vous pouvez télécharger le tar.gz fichier de ici. Puis l'extraire dans un dossier. Vous trouverez un setup.py fichier. Exécutez la commande là-bas que le site mentionné. Par exemple:
Pour info: j'ai essayé d'installer pycurl à mon windows, mais je ne pouvais pas. Mais il l'a fait sur mon linux.
Je suis en cours d'exécution ce sur OS X et sur certaines des solutions ci-dessus n'ont pas de travail. Semblable à Edward Newell commentaire la
PYCURL_SSL_LIBRARY
variable semble avoir été complètement ignoré.Outre la lecture de la PycURL installation doc a révélé ce qui suit:
Donc, j'ai eu la force pour compiler avec:
pip install --compile pycurl
Qui fonctionne sur un certain nombre de cas. Cependant, je n'ai couru dans quelques systèmes qui ont continué à ignorer la variable des maharg101 réponse, j'ai eu recours à l'installation d'options qui, à travers le pip peut être définie comme ceci:
pip install pycurl --global-option="--with-[ssl|gnutls|nss]"
lorsque vous sélectionnez une des trois options à l'intérieur des crochets. Notez que l'option disponible est
ssl
et pasopenssl
. Si vous spécifiez--with-openssl
vous obtiendrez une erreur. Notez également que si vous avez été déconner avec lePYCURL_SSL_LIBRARY
variable de commutation et à funky valeurs de voir ce qui allait se passer cette dernière commande va certainement attraper et jeter une erreur si la valeur est définie, mais pas valide.pip install pycurl --global-option="--with-nss"
fonctionne pour moi. Pour l'anecdote, mon erreur estImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)
De la réinstallation de l'curl
J'ai essayé toutes les suggestions de cette discussion, mais personne n'a travaillé pour moi. Comme solution j'ai réinstallé curl et curlib. Après cela, j'ai été en mesure d'installer pycurl avec le support ssl à l'intérieur de l'environnement.
Au départ:
La partie 1.Re/Installation avec le pip
Tout d'abord, j'ai enlevé pycurl de virtualenv utilisation de pip comme il a été suggéré des réponses précédentes:
L'idée ici est que le paquet a été mis en cache et nous venons de reintstall avec openssl option.
J'ai aussi essayé de recompiler pycurl avec pip à l'aide de:
..mais il avait le même message d'erreur après l'exécution:
La partie 2. Installation à partir de goudron de
Après la méthode précédente ne fonctionne pas, j'ai decidede pour installer pycurl de goudron avec:
Il a installé pycurl l'échelle mondiale, mais pas à l'intérieur de virtualenv. Je n'ai pas vérifier si il a été installé avec le support de SSL ou pas, mais pense que, toujours sans le ssl.
De la partie 3. La réinstallation de roulage et de curllib
Enfin j'ai compris que pycurl n'est pas installe normalement dans l'environnement parce que le mondial de l'enroulement et de libcurl sont compilés avec gnutls.
Avant de commencer le vérifier avec:
L'une des lignes de sortie sera
Recompiler:
Tout d'abord supprimer curl:
Installer toutes les dépendances nécessaires pour curl
Obtenir la dernière (à compter du 20 Décembre 2016) libcurl
Les étapes habituelles pour la création d'une application à partir de la source
Si openssl installé correctement configurer trouverez automatiquement. La sortie sera:
Résoudre tous les problèmes de niveau C lib emplacement des caches ("shared library cache")
Maintenant, essayez de réinstaller pycurl au sein de l'environnement:
Le résultat devrait être:
Cela a fonctionné pour moi:
J'ai tout essayé, ici, sur macOS 10.13, sans succès. Ensuite, j'ai trouvé https://gist.github.com/webinista/b4b6a4cf8f158431b2c5134630c2cbfe qui a travaillé:
Cela a fonctionné pour moi à la fois lorsque vous n'utilisez pas un virtualenv et dans un virtualenv.
Pour toute personne ayant des problème à l'intérieur de PyCharm CE sur macOS
De Mojave, c'est comment je l'ai eu à travailler dans venv:
Ne sais pas si c'est parce que de courir dans un virtualenv, mais sur CentOS 7 ces solutions n'étaient pas de travail pour moi; les objets compilés étaient encore en cours de saisie par le cache dir quand j'étais réinstallation. Si vous rencontrez le même problème après avoir essayé d'autres solutions ici, essayez les solutions suivantes:
--no-cahe-dir
option. Veux juste mentionner en outre qu'il n'a fait que s'exécutant sous root avecsu -
comme @alphonse suggéré. Fairesudo pip3 ...
n'était pas assez bon. Probablement nécessaires pour la variable d'environnement pour être ramassé.Erreur:
Cela a fonctionné pour moi, Mac 10.13, python 3.5, pycurl importation fonctionne après installation comme ce
Après avoir été coincé sur depuis longtemps, j'ai découvert qu'apple arrêté, y compris OpenSSL en-têtes depuis OS X 10.11 El Capitan.
comment réparer?
Pour python 2.7
Pour python 3.5 également installer le suivant:
Télécharger la dernière pycurl-7.43.0.tar.gz (md5) Source de pypi https://pypi.python.org/pypi/pycurl/7.43.0#downloads
et lancez la commande suivante:
Aussi vous pouvez le faire dans un environnement python:
J'ai rencontré ce problème et Sanket Jagtap réponse a fonctionné pour moi. J'ai essayé de répondre avec le plus de votes de réponse, mais il ne fonctionne pas.
Mon openssl ancienne version est la version 1.0.1 t, je pense que la réinstallation de openssl peut résoudre ce problème.
J'ai reconstruit la dernière openssl et essayé cette réponse. Vérifier cela.
Cela a fonctionné pour moi.
je recommande devez réinstaller notre openssl pour essayer..
Suivant a fonctionné pour moi avec Python3.6
MacOS Haute-Sierra
CentOS 7
Ce lien résume la raison pour laquelle les erreurs se produisent et donne une consigne claire pour résoudre le problème.
https://cscheng.info/2018/01/26/installing-pycurl-on-macos-high-sierra.html
Pour moi, le problème est survenu lorsque j'ai mis Haut de la Sierra de El
Le capitaine.