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


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.


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

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

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.


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
    

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

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 .


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.


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.


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.


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'


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


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


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.


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

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

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

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.


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

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

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ć ...


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


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

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


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

pip install pycurl --global-option="--with-openssl"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.