การติดตั้ง curl ใหม่
ฉันพยายามทุกคำแนะนำจากการสนทนานี้ แต่ไม่มีใครได้ผลสำหรับฉัน วิธีแก้ปัญหาฉันได้ติดตั้ง curl และ curlib ใหม่ หลังจากนั้นฉันก็สามารถติดตั้ง pycurl ด้วยการรองรับ ssl ภายในสภาพแวดล้อม
เมื่อเริ่มต้น:
'PycURL / 7.43.0 libcurl / 7.47.0 GnuTLS / 3.4.10 zlib / 1.2.8 libidn / 1.32 librtmp / 2.3'
ส่วนที่ 1 การติดตั้งใหม่ด้วย pip
ประการแรกฉันได้ลบ pycurl ออกจาก Virtualenv โดยใช้ pip ตามคำตอบก่อนหน้านี้:
pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"
แนวคิดที่นี่คือแพ็คเกจนั้นถูกแคชและเราเพิ่งติดตั้งใหม่ด้วยตัวเลือก openssl
ฉันยังพยายามคอมไพล์ pycurl ใหม่ด้วย pip โดยใช้:
pip install pycurl --compile pycurl --no-cache
.. แต่มีข้อผิดพลาดเดียวกันหลังจากทำงาน:
python
import pycurl
pycurl.version
ImportError: pycurl: libcurl link-time ssl backend ( gnutls ) แตกต่างจากแบ็กเอนด์ ssl เวลาคอมไพล์ ( openssl )
ส่วนที่ 2. การติดตั้งจากน้ำมันดิน
หลังจากวิธีการก่อนหน้าไม่ได้ผลฉันได้ตัดสินใจติดตั้ง pycurl จาก tar ด้วย:
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
มีการติดตั้ง pycurl ทั่วโลก แต่ไม่ได้อยู่ใน Virtualenv ฉันยังไม่ได้ตรวจสอบว่าติดตั้งรองรับ SSL หรือไม่ แต่คิดว่ายังไม่มี ssl
ตอนที่ 3 การติดตั้ง curl และ curllib ใหม่
ในที่สุดฉันก็เข้าใจว่า pycurl ไม่ได้ติดตั้งตามปกติในสภาพแวดล้อมเนื่องจาก global curl และ libcurl ถูกรวบรวมด้วย gnutls
ก่อนเริ่มตรวจสอบด้วย:
curl-config --configure
หนึ่งในบรรทัดเอาต์พุตจะเป็น
'- โดยไม่ใช้ ssl' '- พร้อม -gnutls'
ในการคอมไพล์ใหม่:
ขั้นแรกลบ curl:
sudo apt-get purge curl
ติดตั้งการอ้างอิงการสร้างใด ๆ ที่จำเป็นสำหรับ curl
sudo apt-get build-dep curl
รับข้อมูลล่าสุด (ณ วันที่ 20 ธันวาคม 2559) 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
ขั้นตอนปกติในการสร้างแอปจากแหล่งที่มา
./configure
./make
sudo make install
หาก openssl ติดตั้งอย่างถูกต้องการกำหนดค่าจะพบโดยอัตโนมัติ ผลลัพธ์จะเป็น:
curl version: 7.51.0
การตั้งค่าโฮสต์: x86_64-pc-linux-gnu
ติดตั้งคำนำหน้า: / usr / local
คอมไพเลอร์: gcc
SSL support: เปิดใช้งาน (OpenSSL) ...
แก้ไขปัญหาใด ๆ ของแคชตำแหน่ง lib ระดับ C ("แคชไลบรารีที่ใช้ร่วมกัน")
sudo ldconfig
ตอนนี้ลองติดตั้ง pycurl ใหม่ภายในสภาพแวดล้อม:
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"
ผลลัพธ์ควรเป็น:
python
import pycurl
pycurl.version
'PycURL / 7.43.0 libcurl / 7.51.0 OpenSSL / 1.0.2g zlib / 1.2.8 librtmp / 2.3'