Cài đặt lại cuộn
Tôi đã thử mọi gợi ý từ cuộc thảo luận này nhưng không ai làm việc cho tôi. Như giải pháp, tôi đã cài đặt lại cuộn và lề đường. Sau đó, tôi đã có thể cài đặt pycurl với hỗ trợ ssl bên trong môi trường.
Khi bắt đầu:
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
Phần 1.Re/Installation với pip
Đầu tiên, tôi đã xóa pycurl khỏi virtualenv bằng cách sử dụng pip như các câu trả lời trước đó đã đề xuất:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
Ý tưởng ở đây là gói đó đã được lưu vào bộ nhớ cache và chúng tôi chỉ cần kết nối lại nó với tùy chọn openssl.
Tôi cũng đã cố gắng biên dịch lại pycurl bằng pip bằng cách sử dụng:
pip install pycurl --compile pycurl --no-cache
..nhưng gặp lỗi tương tự sau khi chạy:
python
import pycurl
pycurl.version
ImportError: pycurl: libcurl link-time ssl backend ( gnutls ) khac voi compile-time ssl backend ( openssl )
Phần 2. Cài đặt từ tar
Sau khi phương pháp trước đó không hoạt động, tôi đã quyết định cài đặt pycurl từ tar với:
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
Nó đã cài đặt pycurl trên toàn cầu nhưng không phải trong virtualenv. Tôi cũng không kiểm tra xem nó có được cài đặt với hỗ trợ SSL hay không nhưng nghĩ rằng vẫn không có ssl.
Phần 3. Cài đặt lại curl và curllib
Cuối cùng, tôi hiểu rằng pycurl không cài đặt bình thường vào môi trường bởi vì global curl và libcurl được biên dịch bằng gnutls.
Trước khi bắt đầu, hãy kiểm tra nó với:
curl-config --configure
Một trong những dòng đầu ra sẽ là
'--without-ssl' '--with-gnutls'
Để biên dịch lại nó:
Đầu tiên loại bỏ lọn tóc:
sudo apt-get purge curl
Cài đặt bất kỳ phụ thuộc xây dựng nào cần thiết cho curl
sudo apt-get build-dep curl
Nhận mới nhất (kể từ ngày 20 tháng 12 năm 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
Các bước thông thường để xây dựng ứng dụng từ nguồn
./configure
./make
sudo make install
Nếu openssl được cài đặt đúng cách thì cấu hình sẽ tự động tìm thấy nó. Đầu ra sẽ là:
phiên bản curl: 7.51.0
Thiết lập máy chủ: x86_64-pc-linux-gnu
Cài đặt tiền tố: / usr / local
Trình biên dịch: gcc
Hỗ trợ SSL: đã bật (OpenSSL) ...
Giải quyết mọi vấn đề về bộ đệm ẩn vị trí lib cấp C ("bộ đệm thư viện được chia sẻ")
sudo ldconfig
Bây giờ hãy thử cài đặt lại pycurl trong môi trường:
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"
Kết quả sẽ là:
python
import pycurl
pycurl.version
'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'