Błąd zaplecza SSL podczas korzystania z OpenSSL

87

Próbowałem zainstalować pycurl w virtualenv za pomocą pip i otrzymałem ten błąd

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

Czytałem dokumentację mówiącą, że „Aby to naprawić, musisz powiedzieć setup.py, jaki backend SSL jest używany” (źródło), chociaż nie jestem pewien, jak to zrobić, ponieważ zainstalowałem pycurl za pomocą pip.

Jak mogę określić zaplecze SSL podczas instalowania pycurl za pomocą pip?

Dzięki

helloworld2013
źródło
1
Jaki jest Twój system operacyjny?
Evgenii

Odpowiedzi:

121

Po przeczytaniu ich pliku INSTALACYJNEGO udało mi się rozwiązać mój problem, ustawiając zmienną środowiskową i wykonując ponowną instalację

  • usuń istniejącą pycurlinstalację

    pip uninstall pycurl

  • eksportuj zmienną z zapleczem ssl czasu łącza (czyli openssl powyżej)

    export PYCURL_SSL_LIBRARY=openssl

  • Następnie ponownie zainstalować pycurlz braku pamięci podręcznej

    pip install pycurl --no-cache-dir

Może być inne rozwiązanie, ale działa to idealnie dla mnie w przypadku instalacji virtualenvi pip.

helloworld2013
źródło
2
Dzięki, PYCURL_SSL_LIBRARY=openssldziała idealnie!
thnee
Dla użytkowników Mac OS X : nie pamiętaj, aby używać set -x PYCURL_SSL_LIBRARY opensslzamiast, export PYCURL_SSL_LIBRARY=openssljeśli używasz konsoli ryb zamiast bash .
Serge
13
pip install pycurl --no-cache-dir
Shuguang Yang
Dzięki. Przejrzałem kilka potencjalnych rozwiązań tego problemu. To rozwiązanie zadziałało za pierwszym razem.
Matt Setter
przykład instalacji virtualenv krok po kroku yippeecode.com/view-code/343QWQT144/ ...
helloworld2013
77

Odpowiedź helloworld2013 jest poprawna, ale klucz pasuje do biblioteki SSL, której oczekuje pycurl. Błąd będzie wyglądał mniej więcej tak:

pycurl: libcurl zaplecze ssl czasu łącza ( <library> ) różni się od zaplecza ssl czasu kompilacji ( <library> lub „ none / other ”)

Aby to naprawić, musisz użyć biblioteki, której oczekuje pycurl. W moim przypadku mój błąd to „ pycurl: libcurl zaplecze ssl czasu łącza ( nss ) różni się od zaplecza ssl czasu kompilacji (openssl) ”, więc moja poprawka była następująca:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
pip install pycurl
Dr Strangepork
źródło
1
Znakomity . Powinno to uzyskać więcej głosów. Oryginalna odpowiedź dotyczyła niektórych maszyn. Ten jest bardziej ogólnym sposobem naprawienia tego w zależności od platformy twojej.
Nishant,
6
hmm to nie działało dla mnie na Macu. Wygląda na PYCURL_SSL_LIBRARYto, że jest całkowicie ignorowany. Dla mnie zaplecze ssl w czasie kompilacji jest zawsze „(brak / inne)”, mimo że echo PYCURL_SSL_LIBRARYdaje openssl.
Edward Newell,
1
jak @EdwardNewell ta poprawka nie działała dla mnie w Scientific Linux (Rhel), chociaż podałem nss dla PYCURL_SSL_LIBRARY, backend pozostaje (żaden / inny)
Yondaime008
3
Na Macu usunąłem pycurli zainstalowałem z flagami: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
To działało, ale tylko z następującymi opcjami: pip install pycurl --compile --no-cache-dirna CentOS 7.3.
Robert Yi,
51

Z OSX 10.13, zainstalowanym openSSL i virtualenv, odniosłem sukces z:

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
źródło
4
Tak, na MacOS 10.13.1 (High Sierra), to załatwiło sprawę! Wielkie dzięki! Aby ponownie zainstalować openssl:brew reinstall openssl
Denis Arnaud
1
Rozwiązałem z tym mój problem. Dzięki :)
JeongjinKim
1
Naprawiono problem w systemie Mac OSX 10.13.4! Dziękuję Ci.
user1192748
1
Dziękuję Ci! Naprawiono również mój problem. Mac OSX 10.13.4
Steven Church
2
Daryl przykro mi to słyszeć! Znowu zadziałało na Mojave, więc nie jestem pewien, co się dzieje.
Michael Wilson
25

W pip 7.1 możesz umieścić w swoim pliku wymagań:

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

Po prostu zastąp nss odpowiednią biblioteką zaplecza ssl.

maharg101
źródło
1
To rozwiązanie jest lepsze niż eksportowanie zmiennej i ponowna instalacja, ponieważ można je udostępnić w pliku Requirements.txt i nie trzeba go powtarzać dla każdego użytkownika.
dfarrell07
1
eksport nie działał dla mnie w CentOS 7. Ale ustawienie opcji globalnej zadziałało. Dzięki!
Aaron Nguyen
Musiałem połączyć Twoje rozwiązanie z rozwiązaniem @Michael Wilson, aby działało na macOS. Wygląda na problem z krypto - dyskusja tutaj: github.com/pyca/cryptography/issues/3489
kip2
20

Sposób naprawienia pycurl po aktualizacji Mac OS High Sierra:

  1. Zainstaluj ponownie biblioteki curl, aby używać OpenSSL zamiast SecureTransport

    brew install curl --with-openssl
    
  2. Zainstaluj pycurl z poprawnym środowiskiem i ścieżkami kompilacji

    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
    
blady
źródło
2
Pracował dla mnie na High Sierra (używając virtualenv).
djangoat
1
Tak! Zobacz także ten artykuł cscheng.info/2018/01/26/…
somecallitblues
Pracowałem dla mnie na High Sierra (używając virtualenv), ale musiałem usunąć flagę
--user
Dziękuję Ci bardzo!! To było niezwykle pomocne. Uruchamiając High Sierra i spędzając na nim kilka godzin, to jedyne rozwiązanie, które zadziałało :)
Alessandro
Kiedy użyłem --userflagi jak wyżej, otrzymałem:Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
Daryl Spitzer
19

To zadziałało dla mnie:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
easy_install pycurl

Nic z tego nie działało dla mnie (zauważ, że różnica jest po prostu 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
źródło
1
Ta easy_installopcja była jedyną, która działała. Nie rozumiem, dlaczego jest to takie skomplikowane. Potrzebowałem export PYCURL_SSL_LIBRARY=openssl. Mój zgłosił „żaden / inny” dla skompilowanej biblioteki.
CMCDragonkai
Właśnie napotkałem ten problem i to rozwiązanie było jedynym, które działało dla mnie.
Boudewijn Aasman
2
Z mojego doświadczenia wynika, że ​​pip nie usuwa całkowicie starej wersji pucurl, która została zainstalowana z systemem operacyjnym (w moim przypadku Centos7.2). Pip nie dotknął /usr/lib64/python2.7/site-packages/pycurl.so i plików egg-info z wcześniejszej wersji. Z drugiej strony, Easy_install usunął je, oprócz umieszczenia pycurl egg w pakietach witryn.
sokhaty
Ugh, wypróbowałem wszystkie powyższe i nie udało się. To zadziałało, gdy mój pierwotny komunikat o błędzie brzmiał `` ImportError: pycurl: libcurl zaplecze ssl czasu łącza (openssl) różni się od zaplecza ssl czasu kompilacji (brak / inne) ''
James McCormac,
10

Miałem ten problem od kilku dni. Wreszcie, z pomocą innych odpowiedzi tutaj (głównie Alexandra Tyapkova), uzyskałem to, pracując dla AWS Elastic Beanstalk.

Instalacja ręczna (połączenie z 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"

WAŻNE: Pamiętaj, że musisz się upewnić, że używasz aktualnej wersji Pythona i PIP, w przeciwnym razie możesz kompilować ją dla Pythona 2.x i używać v3.x.

Automatyczna instalacja w 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'

Miałem ten problem, ponieważ próbowałem skonfigurować Celery 4 z Django 1.10 w Elastic Beanstalk. Jeśli tak jest, napisałem o tym cały wpis na blogu .

Diego Jancic
źródło
ugh, dziękuję. te rzeczy mogą być denerwujące, zwłaszcza, że ​​pliki konfiguracyjne eb wydają się bardzo kapryśne i nigdy nie powodują rozsądnych błędów (w tym problemów z formatowaniem)
Ian
Głosowałem za tą odpowiedzią, ponieważ bardzo pomogła mi rozwiązać podobny problem podczas instalowania pycurl na AWS: stackoverflow.com/questions/51019622/ ...
Greg Holst
8

Jestem na CentOS 7. Wypróbowałem wszystkie powyższe i nic nie działało. Okazuje się, że musiałem je uruchomić jako użytkownik root. Jeśli więc masz problemy, wypróbuj dowolne z powyższych rozwiązań jako użytkownik root. Jako przykład, oto co zadziałało dla mnie:

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

Oczywiście obowiązują wszystkie typowe zastrzeżenia dotyczące uruchamiania jako użytkownik root.

Uwaga: [nss | openssl | ssl | gnutls] w powyższym kodzie oznacza, że ​​należy wybrać jeden i nie należy umieszczać nawiasów kwadratowych ani rur. Osoba, która zadała oryginalne pytanie, wybrałaby plik openssl. W moim przypadku wybrałem nss. Twój komunikat o błędzie powinien wskazywać, jakiego wyboru dokonać.

Edycja 2019: Wykonanie a sudo pip installmoże spowodować problem z instalacją systemu Python na komputerze. Być może spróbuj pracować w środowisku wirtualnym Pythona i zainstaluj tam pakiety. Jeśli to nie zadziała, sztuczka sudo w mojej odpowiedzi jest prawdopodobnie jedną z ostatnich opcji do rozważenia.

alfonso
źródło
5

Możesz pobrać plik tar.gz stąd . Następnie wypakuj go do folderu. Znajdziesz tam plik setup.py. Uruchom tam polecenie, o którym wspomniała witryna. Na przykład:

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

FYI: Próbowałem zainstalować pycurl w moich oknach, ale nie mogłem. Ale zrobiłem to na moim Linuksie.

Sabuj Hassan
źródło
dzięki za odpowiedź, ale to może zadziałać tylko dla mnie, jeśli nie
wykonam
@Sabuj, aby zainstalować pycurl w systemie Windows, użyj jednego z instalatorów dostępnych na tej doskonałej stronie internetowej: lfd.uci.edu/~gohlke/pythonlibs/#pycurl
Adam
4

Używam tego na OS X i niektóre z powyższych rozwiązań nie działały. Podobny do komentarza Edwarda NewellaPYCURL_SSL_LIBRARY zmienna wydawał się być całkowicie ignorowane.
Dalsze czytanie dokumentu instalacyjnego PycURL ujawniło następujące informacje:

pip może przeinstalować pakiet, który wcześniej skompilował, zamiast rekompilować pycurl z nowo określonymi opcjami

Dlatego musiałem wymusić kompilację z:

pip install --compile pycurl

Działa to w wielu przypadkach. Jednak napotkałem kilka systemów, które nadal ignorowały tę zmienną, więc podobnie jak odpowiedź maharg101 uciekłem się do opcji instalacji, które przez pip można ustawić w następujący sposób:

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

gdzie wybierasz jedną z trzech opcji w nawiasach kwadratowych. Zwróć uwagę, że dostępna opcja to, ssla nie openssl . Jeśli podasz --with-openssl, pojawi się błąd. Zauważ również, że jeśli bawiłeś się PYCURL_SSL_LIBRARYzmienną i przełączałeś ją na funky wartości, aby zobaczyć, co się stanie, to ostatnie polecenie z pewnością ją złapie i wyrzuci błąd, jeśli wartość jest ustawiona, ale nie jest poprawna.

Gunga
źródło
1
odinstaluj najpierw pycurl i zadziała pip install pycurl --global-option="--with-nss"dla mnie. Dla ImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)
przypomnienia
Dzięki @ahyong, trik z opcją globalną zadziałał dla mnie, mimo że próbowałem podczas instalacji z tar, działał z pip, ale nie z setup.py dziwne ...
Yondaime008
4

Ponowna instalacja curl

Wypróbowałem każdą sugestię z tej dyskusji, ale nikt dla mnie nie pracował. Jako rozwiązanie ponownie zainstalowałem curl i curlib. Potem mogłem zainstalować pycurl z obsługą SSL w środowisku.

Na starcie:

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

Część 1.Re/Instalacja za pomocą pip

Po pierwsze, usunąłem pycurl z virtualenv za pomocą pip, tak jak sugerowano poprzednie odpowiedzi:

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

Pomysł jest taki, że pakiet został zbuforowany i po prostu ponownie zainstalujemy go z opcją openssl.

Próbowałem również przekompilować pycurl z pip przy użyciu:

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

..ale miał ten sam błąd po uruchomieniu:

python
import pycurl
pycurl.version

ImportError: pycurl: libcurl zaplecze ssl czasu łącza ( gnutls ) różni się od zaplecza ssl czasu kompilacji ( openssl )

Część 2. Instalacja ze smoły

Po tym, jak poprzednia metoda nie zadziałała, zdecydowałem się zainstalować pycurl z tar z:

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

Zainstalował pycurl globalnie, ale nie w ramach virtualenv. Nie sprawdziłem też, czy został zainstalowany z obsługą SSL, czy nie, ale myślę, że nadal bez SSL.

Część 3. Ponowna instalacja curl i curllib

W końcu zrozumiałem, że pycurl nie instaluje się normalnie w środowisku, ponieważ global curl i libcurl są kompilowane za pomocą gnutls.

Przed rozpoczęciem sprawdź to za pomocą:

curl-config --configure

Jedna z linii wyjściowych będzie

„--bez-ssl” „--z-gnutls”

Aby go ponownie skompilować:

Najpierw usuń zwijanie:

sudo apt-get purge curl

Zainstaluj wszystkie zależności kompilacji potrzebne do curl

sudo apt-get build-dep curl

Pobierz najnowsze (stan na 20 grudnia 2016 r.) 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

Typowe kroki tworzenia aplikacji ze źródła

./configure
./make
 sudo make install

Jeśli openssl jest poprawnie zainstalowany, configure znajdzie go automatycznie. Wynik będzie:

curl wersja: 7.51.0
Konfiguracja hosta: x86_64-pc-linux-gnu
Przedrostek instalacyjny: / usr / local
Kompilator: gcc Obsługa
SSL: włączona (OpenSSL) ...

Rozwiązywanie wszelkich problemów z pamięcią podręczną lokalizacji bibliotek na poziomie C („pamięć podręczna bibliotek współdzielonych”)

sudo ldconfig

Teraz spróbuj ponownie zainstalować pycurl w środowisku:

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"

Wynik powinien być:

python
import pycurl
pycurl.version

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

Alexander Tyapkov
źródło
3

Dla każdego, kto ma problem z PyCharm CE na macOS Mojave, oto jak sprawiłem, że działa w venv:

  • określ wersję: 7.43.0.1
  • Opcje: --install-option = - with-openssl --install-option = - openssl-dir = / usr / local / opt / openssl

Zrzut ekranu z PyCharm Project Interpreter

fabe
źródło
1
Dla mnie na macOS Mojave musiałem uruchomić brew reinstaluje openssl, a następnie pip install pycurl == 7.43.0.1 --install-option = - with-openssl --install-option = - openssl-dir = / usr / local / opt / openssl
user495732 Why Me
2

To zadziałało dla mnie:

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

user10148784
źródło
2

Próbowałem wszystkiego tutaj na macOS 10.13 bez powodzenia. Następnie znalazłem https://gist.github.com/webinista/b4b6a4cf8f158431b2c5134630c2cbfe, który działał:

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

Działało to dla mnie zarówno wtedy, gdy nie korzystałem z virtualenv, jak i w ramach virtualenv.

Daryl Spitzer
źródło
1

Nie jestem pewien, czy dzieje się tak z powodu działania w virtualenv, ale w CentOS 7 te rozwiązania nie działały dla mnie; skompilowane obiekty nadal były pobierane z katalogu pamięci podręcznej, kiedy instalowałem ponownie. Jeśli napotykasz ten sam problem po wypróbowaniu innych rozwiązań tutaj, wypróbuj następujące rozwiązania:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl --no-cache-dir
Robert Kelly
źródło
To samo tutaj, na CentOS 7 nie działało, dopóki nie dodałem --no-cahe-diropcji. Chcę tylko wspomnieć, że udało mu się uruchomić tylko z rootem, su -jak zasugerował @alfonso. Robienie sudo pip3 ...nie było wystarczająco dobre. Prawdopodobnie jest to konieczne do pobrania zmiennej środowiskowej.
Nagev
1

Błąd:

ImportError: pycurl: libcurl zaplecze ssl czasu łącza (openssl) różni się od zaplecza ssl czasu kompilacji (brak / inne)

To zadziałało dla mnie, Mac 10.13, python 3.5, import pycurl działał po zainstalowaniu w ten sposób

pip3 uninstall pycurl;

pip3 install --compile --install-option="--with-openssl" pycurl
vairav
źródło
Działało to również dla mnie w Pythonie 2.7.10 na High Sierra.
Skyler
1

Po długim czasie utknąłem w tym miejscu, dowiedziałem się, że firma Apple przestała zawierać nagłówki OpenSSL od czasu OS X 10.11 El Capitan. jak naprawić?

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
Biały niedźwiedź
źródło
Jasne, zajęło mi dużo czasu, zanim to zadziałało, muszę przyznać, że dość denerwujące. Baw się dobrze!!
Whitebear
1

Ten sam problem na amazonlinux - rozwiązany
Miałem ten problem podczas tworzenia obrazu dockera w oparciu o amazonlinux, instalowania Pythona3.7 i dodawania modułu pycurl. Wszystkie inne moduły Pythona zostały poprawnie zainstalowane z wyjątkiem pycurl. Po wypróbowaniu wielu rozwiązań zaproponowanych w wątkach związanych z tym problemem ostatecznie rozwiązałem swój problem, używając następujących poleceń do instalacji wszystkich elementów.
yum -y install python3 python3-devel gcc libcurl-devel aws-cli openssl-static.x86_64
następnie zainstalowałem inne moduły, takie jak psycopg2-binary, request, certifi, używając:
pip3 install --user --no-cache-dir -r requirements.txt

i ostatecznie zainstalowany moduł pycurl przy użyciu:

pip3 install --user --global-option="--with-openssl" --no-cache-dir pycurl
i przekazując tutaj opcję globalną openssl. Instalacja biblioteki statycznej openssl-static.x86_64 rozwiązała problem w moim przypadku, ponieważ wykorzystano opcję globalną używaną przez drugie polecenie pip3.

rimetnac
źródło
0

W przypadku Pythona 2.7

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

W przypadku Pythona 3.5 zainstaluj również następną:

sudo apt-get install python3.5-dev

Pobierz najnowsze źródło pycurl-7.43.0.tar.gz (md5) z pypi https://pypi.python.org/pypi/pycurl/7.43.0#downloads i uruchom następną komendę:

python setup.py --with-openssl install

Możesz to również zrobić w środowisku Pythona:

(test_env)user@pc:~/Downloads/pycurl-7.43.0$ python setup.py --with-openssl install
Andrew Nodermann
źródło
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
źródło
0

Napotkałem ten problem i odpowiedź Sanketa Jagtapa zadziałała dla mnie. Wypróbowałem odpowiedź z największą liczbą głosów, ale nie zadziałała.

Moja stara wersja openssl to 1.0.1t, myślę, że ponowna instalacja openssl może rozwiązać ten problem.

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

Przebudowałem najnowszy openssl i wypróbowałem odpowiedź. Sprawdź to.

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

To zadziałało dla mnie.

Zalecam ponowne zainstalowanie naszego openssl, aby spróbować ...

Upadły
źródło
0

Następujące pracowałem dla mnie z 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
źródło
0

FWIW, napotkałem wiele problemów, aby to działało przez AWS Elastic Beanstalk i w końcu udało mi się to zrobić z:

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
źródło
0

Ostatnio podczas aktualizacji projektu Django miałem podobny błąd. Ale tym razem ustawienie zmiennej środowiskowej nie zadziałało. Musiałem więc ustawić zarówno zmienną środowiskową, jak export PYCURL_SSL_LIBRARY=openssli przekazać flagę --global-option="with-openssl".

Oryginalna odpowiedź została opublikowana na tej stronie

helloworld2013
źródło
-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
źródło