Kesalahan backend SSL saat menggunakan OpenSSL

88

Saya mencoba menginstal pycurl di virtualenv menggunakan pip dan saya mendapat kesalahan ini

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

Saya membaca beberapa dokumentasi yang mengatakan bahwa "Untuk memperbaiki ini, Anda perlu memberi tahu setup.py apa backend SSL yang digunakan" (sumber) meskipun saya tidak yakin bagaimana melakukan ini karena saya menginstal pycurl menggunakan pip.

Bagaimana saya bisa menentukan backend SSL saat menginstal pycurl dengan pip?

Terima kasih

helloworld2013
sumber
1
Apa OS Anda?
Evgenii

Jawaban:

121

Setelah membaca file INSTALASI mereka, saya dapat menyelesaikan masalah saya dengan mengatur variabel lingkungan dan melakukan instal ulang

  • hapus pycurlinstalasi yang ada

    pip uninstall pycurl

  • ekspor variabel dengan backend ssl waktu tautan Anda (yang terbuka di atas)

    export PYCURL_SSL_LIBRARY=openssl

  • kemudian, re-install pycurldengan ada cache

    pip install pycurl --no-cache-dir

Mungkin ada solusi lain di luar sana tetapi ini bekerja dengan sempurna untuk saya pada instalasi virtualenvdan pip.

helloworld2013
sumber
2
Terima kasih, PYCURL_SSL_LIBRARY=opensslbekerja dengan sempurna!
thnee
Untuk pengguna mac os x : jangan ingat gunakan set -x PYCURL_SSL_LIBRARY openssldaripada export PYCURL_SSL_LIBRARY=openssljika Anda menggunakan konsol ikan daripada bash .
Serge
13
pip install pycurl --no-cache-dir
Shuguang Yang
Terima kasih. Saya telah melihat sejumlah solusi potensial untuk masalah ini. Solusi ini berhasil pertama kali.
Matt Setter
langkah demi langkah contoh pemasangan virtualenv yippeecode.com/view-code/343QWQT144/…
helloworld2013
77

Jawaban helloworld2013 benar, tetapi kuncinya cocok dengan pustaka SSL yang diharapkan pycurl. Kesalahannya akan seperti ini:

pycurl: libcurl link-time ssl backend ( <library> ) berbeda dengan backend ssl waktu kompilasi ( <library> atau " none / other ")

Untuk memperbaikinya, Anda harus menggunakan library yang diharapkan pycurl. Dalam kasus saya, kesalahan saya adalah " pycurl: libcurl link-time ssl backend ( nss ) berbeda dari waktu kompilasi ssl backend (openssl) ", jadi perbaikan saya adalah:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
pip install pycurl
DrStrangepork
sumber
1
Brilian. Ini harus mendapatkan lebih banyak suara. Jawaban asli diterapkan pada beberapa mesin. Ini adalah cara yang lebih umum untuk memperbaikinya tergantung pada platform Anda.
Nishant
6
hmm ini tidak berhasil untuk saya di mac. Sepertinya PYCURL_SSL_LIBRARYbenar-benar diabaikan. Backend ssl waktu kompilasi selalu "(tidak ada / lainnya)" untuk saya, meskipun echo PYCURL_SSL_LIBRARYmemberi openssl.
Edward Newell
1
seperti @EdwardNewell, perbaikan ini tidak berhasil untuk saya di Scientific Linux (Rhel), meskipun saya menentukan nss untuk PYCURL_SSL_LIBRARY, backend tetap (tidak ada / lainnya)
Yondaime008
3
Di Mac saya menghapus pycurldan menginstal dengan bendera: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
Ini berfungsi tetapi hanya dengan opsi berikut: pip install pycurl --compile --no-cache-dir di CentOS 7.3.
Robert Yi
52

Dengan macOS 10.13, openSSL yang diinstal bir, dan virtualenv, saya berhasil dengan:

# cd to your virtualenv, then…
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
sumber
4
Ya, di MacOS 10.13.1 (High Sierra), itu berhasil! Terimakasih banyak! Untuk menginstal ulang openssl:brew reinstall openssl
Denis Arnaud
1
Saya memperbaiki masalah saya dengannya. Terima kasih :)
JeongjinKim
1
Memperbaiki masalah di Mac OSX 10.13.4! Terima kasih.
pengguna1192748
1
Terima kasih! Juga memperbaiki masalah saya. Mac OSX 10.13.4
Gereja Steven
2
Daryl ikut prihatin! Itu berhasil lagi untuk saya di Mojave, jadi saya tidak yakin apa yang terjadi.
Michael Wilson
25

Dengan pip 7.1 Anda dapat meletakkan yang berikut ini di file persyaratan Anda:

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

Cukup ganti nss dengan pustaka backend ssl yang relevan.

maharg101
sumber
1
Solusi ini lebih baik daripada mengekspor var dan menginstal ulang karena dapat dibagikan di file requirement.txt dan tidak harus diulangi untuk setiap pengguna.
dfarrell07
1
ekspor tidak berfungsi untuk saya di CentOS 7. Tetapi pengaturan opsi global berhasil. Terima kasih!
Aaron Nguyen
Saya harus menggabungkan solusi Anda dan @Michael Wilson untuk membuatnya berfungsi di macOS. Sepertinya masalah kripto - beberapa diskusi di sini: github.com/pyca/cryptography/issues/3489
kip2
20

Metode untuk memperbaiki pycurl setelah pembaruan Mac OS High Sierra:

  1. Instal ulang pustaka curl untuk menggunakan OpenSSL, bukan SecureTransport

    brew install curl --with-openssl
    
  2. Instal pycurl dengan lingkungan dan jalur waktu pembuatan yang benar

    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
    
pucat
sumber
2
Bekerja untuk saya di High Sierra (menggunakan virtualenv).
djangoat
1
Iya! Juga lihat artikel ini cscheng.info/2018/01/26/…
somecallitblues
Bekerja untuk saya di High Sierra (menggunakan virtualenv) tetapi saya harus menghapus
--pengguna
Terima kasih banyak!! Itu sangat membantu. Menjalankan High Sierra dan menghabiskan beberapa jam di atasnya, ini adalah satu-satunya solusi yang berhasil :)
Alessandro
Ketika saya menggunakan --userbendera seperti di atas, saya mendapat:Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
Daryl Spitzer
19

Ini berhasil untuk saya:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
easy_install pycurl

Tidak ada yang berhasil untuk saya (perhatikan perbedaannya hanya 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
sumber
1
The easy_installpilihan adalah satu-satunya yang bekerja. Saya tidak mengerti mengapa ini begitu rumit. Saya membutuhkan export PYCURL_SSL_LIBRARY=openssl. Satu saya melaporkan "tidak ada / lainnya" untuk perpustakaan yang dikompilasi.
CMCDragonkai
Baru saja mengalami masalah ini dan solusi ini adalah satu-satunya yang berhasil untuk saya.
Boudewijn Aasman
2
Dalam pengalaman saya, pip tidak sepenuhnya menghapus versi lama pucurl yang diinstal dengan OS (Centos7.2 dalam kasus saya). Pip tidak menyentuh /usr/lib64/python2.7/site-packages/pycurl.so dan file info telur dari versi sebelumnya. Easy_install di sisi lain, menghapusnya selain menempatkan telur pycurl ke dalam paket situs.
sokhaty
Ugh, coba semua cara di atas dan tidak berhasil. Ini berfungsi untuk saya ketika pesan kesalahan asli saya adalah `` ImportError: pycurl: libcurl link-time ssl backend (openssl) berbeda dari waktu kompilasi ssl backend (tidak ada / lainnya) '' ``
James McCormac
10

Saya mengalami masalah ini selama berhari-hari. Akhirnya dengan bantuan jawaban lain di sini (terutama Alexander Tyapkov) saya membuatnya berfungsi untuk AWS Elastic Beanstalk.

Instal manual (terhubung dengan 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"

PENTING: Harap dicatat bahwa Anda harus memastikan bahwa Anda menggunakan versi Python dan PIP saat ini, jika tidak, Anda mungkin akan mengompilasinya untuk Python 2.x dan menggunakan v3.x.

Instal otomatis di 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'

Saya mengalami masalah ini karena saya mencoba mengkonfigurasi Celery 4 dengan Django 1.10 di Elastic Beanstalk. Jika itu kasus Anda, saya menulis posting blog lengkap tentang itu .

Diego Jancic
sumber
ugh terima kasih. hal ini dapat mengganggu, terutama karena file konfigurasi eb tampak sangat berubah-ubah dan tidak pernah memberikan kesalahan yang wajar (termasuk masalah format)
Ian
Saya memberi suara positif pada jawaban ini karena sangat membantu saya untuk memecahkan masalah serupa saat memasang pycurl di AWS: stackoverflow.com/questions/51019622/…
Greg Holst
8

Saya menggunakan CentOS 7. Saya mencoba semua cara di atas dan tidak bisa mendapatkan apa pun untuk berfungsi. Ternyata saya perlu menjalankan ini sebagai pengguna root. Jadi jika Anda mengalami masalah, coba salah satu solusi di atas sebagai pengguna root. Sebagai contoh, inilah yang berhasil untuk saya:

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

Tentu saja, semua penafian biasa tentang menjalankan sebagai pengguna root berlaku.

Catatan: [nss | openssl | ssl | gnutls] pada kode di atas berarti memilih satu, dan tidak menyertakan tanda kurung siku atau pipa. Orang yang menanyakan pertanyaan awal akan memilih openssl. Dalam kasus khusus saya, saya memilih nss. Pesan kesalahan Anda harus memberi tahu Anda pilihan mana yang harus dibuat.

Edit 2019: Melakukannya sudo pip installdapat menyebabkan masalah dengan pemasangan sistem mesin Python. Mungkin mencoba bekerja di lingkungan virtual Python dan menginstal paket di sana. Jika itu tidak berhasil, trik sudo dalam jawaban saya mungkin adalah salah satu opsi terakhir untuk dipertimbangkan.

Alfonso
sumber
5

Anda dapat mengunduh file tar.gz dari sini . Kemudian ekstrak ke dalam folder. Anda akan menemukan file setup.py di sana. Jalankan perintah di sana yang disebutkan situs tersebut. Sebagai contoh:

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

FYI: Saya mencoba menginstal pycurl di windows saya, tetapi saya tidak bisa. Tapi melakukannya di linux saya.

Sabuj Hassan
sumber
terima kasih atas tanggapannya, tetapi ini hanya dapat berfungsi untuk saya jika saya tidak melakukan instalasi melalui virtualenv dan pip
helloworld2013
@Sabuj untuk menginstal pycurl di Windows menggunakan salah satu penginstal yang disediakan di situs web luar biasa ini: lfd.uci.edu/~gohlke/pythonlibs/#pycurl
Adam
4

Saya menjalankan ini di OS X dan beberapa solusi di atas tidak berfungsi. Mirip dengan komentar Edward Newell yang PYCURL_SSL_LIBRARYvariabel tampaknya telah benar-benar diabaikan.
Bacaan lebih lanjut dari dokumen instalasi PycURL mengungkapkan hal-hal berikut:

pip dapat menginstal ulang paket yang telah dikompilasi sebelumnya daripada mengkompilasi ulang pycurl dengan opsi yang baru ditentukan

Oleh karena itu, saya harus memaksanya untuk dikompilasi dengan:

pip install --compile pycurl

Itu bekerja pada sejumlah kasus. Namun, saya mengalami beberapa sistem yang terus mengabaikan variabel jadi, mirip dengan jawaban maharg101 , saya menggunakan opsi instal yang melalui pip dapat diatur seperti ini:

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

di mana Anda memilih salah satu dari tiga opsi di dalam tanda kurung siku. Perhatikan bahwa opsi yang tersedia adalah ssldan tidak openssl . Jika Anda menentukan, --with-opensslAnda akan mendapatkan kesalahan. Perhatikan juga bahwa jika Anda mengotak-atik PYCURL_SSL_LIBRARYvariabel dan mengubahnya menjadi nilai yang funky untuk melihat apa yang akan terjadi, perintah terakhir ini pasti akan menangkapnya dan menimbulkan kesalahan jika nilainya disetel tetapi tidak valid.

Gunga
sumber
1
uninstall pycurl dulu, dan lakukan pip install pycurl --global-option="--with-nss"pekerjaan untuk saya. Sebagai catatan, kesalahan saya adalahImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)
ahyong
Terima kasih @ahyong trik opsi global berhasil untuk saya, meskipun saya mencoba saat menginstal dari tar, ini bekerja dengan pip tetapi tidak dengan setup.py aneh ...
Yondaime008
4

Pemasangan ulang curl

Saya mencoba setiap saran dari diskusi ini tetapi tidak ada yang berhasil untuk saya. Sebagai solusi, saya telah menginstal ulang curl dan curlib. Setelah itu saya dapat menginstal pycurl dengan dukungan ssl di dalam lingkungan.

Di mulai:

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

Bagian 1. Re/Installation dengan pip

Pertama saya telah menghapus pycurl dari virtualenv menggunakan pip seperti yang disarankan jawaban sebelumnya:

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

Idenya di sini adalah bahwa paket telah di-cache dan kami hanya menginstal ulang dengan opsi openssl.

Saya juga mencoba mengkompilasi ulang pycurl dengan pip menggunakan:

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

..tetapi mengalami kesalahan yang sama setelah menjalankan:

python
import pycurl
pycurl.version

ImportError: pycurl: libcurl link-time ssl backend ( gnutls ) berbeda dari waktu kompilasi ssl backend ( openssl )

Bagian 2. Instalasi dari tar

Setelah metode sebelumnya tidak berhasil, saya telah memutuskan untuk menginstal pycurl dari tar dengan:

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

Ini telah menginstal pycurl secara global tetapi tidak dalam virtualenv. Saya juga tidak memeriksa apakah itu diinstal dengan dukungan SSL atau tidak tetapi berpikir itu masih tanpa ssl.

Bagian 3. Pemasangan ulang curl dan curllib

Akhirnya saya mengerti bahwa pycurl tidak menginstal secara normal ke dalam lingkungan karena global curl dan libcurl dikompilasi dengan gnutls.

Sebelum memulai, periksa dengan:

curl-config --configure

Salah satu jalur keluaran akan menjadi

'--tanpa-ssl' '--dengan-gnutls'

Untuk mengkompilasi ulang:

Pertama-tama hapus ikal:

sudo apt-get purge curl

Instal semua dependensi build yang diperlukan untuk curl

sudo apt-get build-dep curl

Dapatkan libcurl terbaru (per 20 Des 2016)

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

Langkah-langkah biasa untuk membuat aplikasi dari sumber

./configure
./make
 sudo make install

Jika openssl diinstal dengan benar, maka konfigurasi akan menemukannya secara otomatis. Outputnya adalah:

versi curl: 7.51.0
Konfigurasi host: x86_64-pc-linux-gnu
Awalan instalasi: / usr / local
Penyusun: gcc
Dukungan SSL: diaktifkan (OpenSSL) ...

Selesaikan masalah apa pun dari cache lokasi lib tingkat C ("cache perpustakaan bersama")

sudo ldconfig

Sekarang coba instal ulang pycurl dalam lingkungan:

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"

Hasilnya harus:

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
sumber
4

Bagi siapa pun yang mengalami masalah di dalam PyCharm CE di macOS Mojave, inilah cara saya membuatnya berfungsi di venv:

  • tentukan versi: 7.43.0.1
  • Opsi: --install-option = - with-openssl --install-option = - openssl-dir = / usr / local / opt / openssl

Tangkapan layar PyCharm Project Interpreter

fabe
sumber
1
Bagi saya di macOS Mojave, saya perlu menjalankan brew reinstall openssl dan kemudian pip install pycurl == 7.43.0.1 --install-option = - with-openssl --install-option = - openssl-dir = / usr / local / opt / openssl
user495732 Why Me
3

Saya mencoba semuanya di sini di macOS 10.13 tetapi tidak berhasil. Kemudian saya menemukan https://gist.github.com/webinista/b4b6a4cf8f158431b2c5134630c2cbfe yang berfungsi:

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

Ini bekerja untuk saya baik ketika tidak menggunakan virtualenv dan dalam virtualenv.

Daryl Spitzer
sumber
2

Ini berhasil untuk saya:

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

pengguna10148784
sumber
1

Tidak yakin apakah ini karena berjalan di virtualenv, tetapi di CentOS 7 solusi ini tidak berfungsi untuk saya; objek yang dikompilasi masih diambil dari dir cache saat saya menginstal ulang. Jika Anda mengalami masalah yang sama setelah mencoba solusi lain di sini, coba yang berikut ini:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl --no-cache-dir
Robert Kelly
sumber
Sama di sini, di CentOS 7 itu tidak berfungsi sampai saya menambahkan --no-cahe-diropsi. Hanya ingin menyebutkan lebih lanjut bahwa itu hanya berhasil berjalan di bawah root su -seperti yang disarankan @alfonso. Melakukan sudo pip3 ...tidak cukup baik. Mungkin perlu agar variabel lingkungan diambil.
Nagev
1

Kesalahan:

ImportError: pycurl: libcurl link-time ssl backend (openssl) berbeda dengan backend ssl waktu kompilasi (tidak ada / lainnya)

Ini bekerja untuk saya, Mac 10.13, python 3.5, pycurl import bekerja setelah menginstal seperti ini

pip3 uninstall pycurl;

pip3 install --compile --install-option="--with-openssl" pycurl
vairav
sumber
Ini bekerja untuk saya juga di Python 2.7.10 di High Sierra.
skyler
1

Setelah terjebak dalam hal ini untuk waktu yang lama, saya menemukan bahwa apel berhenti termasuk header OpenSSL sejak OS X 10.11 El Capitan. bagaimana cara memperbaiki?

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
Whitebear
sumber
Tentu saja, saya membutuhkan banyak waktu untuk membuatnya bekerja, sangat menjengkelkan saya harus mengatakan. Selamat bersenang-senang!!
Whitebear
1

Masalah yang sama di amazonlinux - terpecahkan
Saya mengalami masalah ini saat membuat gambar buruh pelabuhan berdasarkan amazonlinux, menginstal python3.7 dan menambahkan modul pycurl. Semua modul python lainnya dipasang dengan benar kecuali pycurl. Setelah mencoba banyak solusi yang diusulkan di utas yang terkait dengan masalah ini, saya akhirnya memecahkan masalah saya dengan menggunakan perintah berikut untuk pemasangan semua bagian.
yum -y install python3 python3-devel gcc libcurl-devel aws-cli openssl-static.x86_64
kemudian instal modul lain seperti psycopg2-binary, request, certifi menggunakan:
pip3 install --user --no-cache-dir -r requirements.txt

dan terakhir memasang modul pycurl menggunakan:

pip3 install --user --global-option="--with-openssl" --no-cache-dir pycurl
dan lewat sini opsi global openssl. Instalasi pustaka statis openssl-static.x86_64 memecahkan masalah dalam kasus saya karena menggunakan opsi global yang digunakan oleh perintah pip3 kedua.

rimetnac.dll
sumber
0

Untuk python 2.7

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

Untuk python 3.5 juga instal selanjutnya:

sudo apt-get install python3.5-dev

Unduh Sumber pycurl-7.43.0.tar.gz (md5) terbaru dari pypi https://pypi.python.org/pypi/pycurl/7.43.0#downloads dan jalankan perintah berikutnya:

python setup.py --with-openssl install

Anda juga dapat melakukannya ke lingkungan python:

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

Saya mengalami masalah ini dan jawaban Sanket Jagtap berhasil untuk saya. Saya mencoba jawaban dengan jawaban terbanyak tetapi tidak berhasil.

Versi lama openssl saya adalah 1.0.1t, saya pikir menginstal ulang openssl dapat menyelesaikan masalah ini.

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

Saya membangun kembali openssl terbaru dan mencoba jawaban ini . Lihat ini.

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

Ini berhasil untuk saya.

saya sarankan kami harus menginstal ulang openssl kami untuk mencoba ..

F.allen
sumber
0

Mengikuti berhasil untuk saya dengan 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
sumber
0

FWIW, saya mengalami banyak masalah agar ini berfungsi melalui AWS Elastic Beanstalk dan akhirnya bisa membuatnya berfungsi dengan:

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
sumber
0

Baru-baru ini ketika memutakhirkan proyek Django saya mengalami kesalahan yang serupa. Tapi kali ini pengaturan variabel lingkungan tidak berhasil. Jadi saya harus mengatur kedua variabel lingkungan export PYCURL_SSL_LIBRARY=openssldan meneruskan bendera --global-option="with-openssl".

Jawaban asli telah diposting di halaman ini

helloworld2013
sumber
-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
sumber