ओपनएसएसएल का उपयोग करते समय एसएसएल की त्रुटि


87

मैं एक virtualenv में पाइप का उपयोग करके pycurl स्थापित करने की कोशिश कर रहा था और मुझे यह त्रुटि मिली

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

मैंने कुछ दस्तावेज़ीकरण पढ़ते हुए कहा कि "इसे ठीक करने के लिए, आपको सेटअप थिंकपैड को बताना होगा कि एसएसएल बैकएंड का क्या उपयोग किया जाता है" (स्रोत) हालांकि मुझे यकीन नहीं है कि यह कैसे करना है क्योंकि मैंने पाइप का उपयोग करके pycurl स्थापित किया है।

पाइप के साथ pycurl स्थापित करते समय मैं एसएसएल बैकएंड को कैसे निर्दिष्ट कर सकता हूं?

धन्यवाद


1
आपका OS क्या है?
इवगेनी

जवाबों:


121

उनकी स्थापना फ़ाइल को पढ़ने के बाद, मैं एक पर्यावरण चर स्थापित करके अपनी समस्या को हल करने में सक्षम था और एक पुनर्स्थापना किया

  • मौजूदा pycurlस्थापना को हटा दें

    pip uninstall pycurl

  • आपके लिंक-टाइम ssl बैकएंड के साथ एक्सपोर्ट चर (जो कि ओपनसेल ऊपर है)

    export PYCURL_SSL_LIBRARY=openssl

  • तो, फिर से स्थापित करने pycurlके साथ कोई कैश

    pip install pycurl --no-cache-dir

वहाँ बाहर अन्य समाधान हो सकता है, लेकिन यह मेरे लिए एक virtualenvऔर pipस्थापना पर पूरी तरह से काम करता है ।


2
धन्यवाद, PYCURL_SSL_LIBRARY=opensslपूरी तरह से काम करता है!
१६

के लिए मैक ओएस एक्स उपयोगकर्ताओं: उपयोग याद नहीं है set -x PYCURL_SSL_LIBRARY opensslके बजाय export PYCURL_SSL_LIBRARY=opensslअगर आप का उपयोग मछली के बजाय सांत्वना बैश
सर्ज

13
पाइप स्थापित करें pycurl --no-cache-dir
यांग

धन्यवाद। मैंने इस मुद्दे पर कई संभावित समाधानों के माध्यम से देखा है। इस समाधान ने पहली बार काम किया।
मैट सेटर

step by step virtualenv स्थापित उदाहरण yippeecode.com/view-code/343QWQT144/…
helloworld2013

77

helloworld2013 का उत्तर सही है, लेकिन कुंजी SSL पुस्तकालय से मेल खा रही है जो pycurl उम्मीद कर रहा है। त्रुटि कुछ इस तरह होगी:

pycurl: libcurl लिंक-टाइम ssl बैकेंड ( <पुस्तकालय> ) संकलन-समय ssl बैकएंड ( <पुस्तकालय> या " कोई नहीं / अन्य ") से अलग है

इसे ठीक करने के लिए, आपको लाइब्रेरी का उपयोग करना होगा pycurl उम्मीद कर रहा है। मेरे मामले में, मेरी त्रुटि " pycurl: libcurl लिंक-टाइम ssl बैकेंड ( nss ) संकलन-समय ssl बैकेंड (ओपनसेल) " से अलग है, इसलिए मेरा फिक्स था:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
pip install pycurl

1
प्रतिभाशाली । इसे ज्यादा वोट मिलने चाहिए। कुछ मशीनों पर लागू मूल उत्तर। यह एक सामान्य तरीका है जो इसे उर प्लेटफॉर्म के आधार पर ठीक करता है।
निशांत

6
हम्म यह मेरे लिए एक पर काम नहीं किया MAC। ऐसा लगता है जैसे PYCURL_SSL_LIBRARYपूरी तरह से नजरअंदाज किया जा रहा है। संकलन-समय ssl बैकएंड मेरे लिए हमेशा "(कोई नहीं / अन्य)" होता है, भले ही echo PYCURL_SSL_LIBRARYवह देता है openssl
एडवर्ड नेवेल

1
@EdwardNewell की तरह इस फिक्स ने मेरे लिए साइंटिफिक लिनक्स (Rhel) पर काम नहीं किया, हालाँकि मैंने PYCURL_SSL_LIBRARY के लिए nss निर्दिष्ट किया था, बैकएंड (कोई नहीं / कोई नहीं)
Yondaime003

3
मैक पर मैंने pycurlझंडे के साथ हटा दिया और स्थापित किया: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
आइगिनिन

2
यह काम किया लेकिन केवल निम्नलिखित विकल्पों के साथ: pip install pycurl --compile --no-cache-dirCentOS 7.3 पर।
रॉबर्ट यी

51

OSX 10.13 के साथ, एक काढ़ा-स्थापित ओपनएसएसएल, और वर्चुनेल, मैं इसके साथ सफल रहा:

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
हाँ, MacOS 10.13.1 (हाई सिएरा) पर, जिसने चाल बना दी! बहुत धन्यवाद! ओपनसिएल को फिर से स्थापित करने के लिए:brew reinstall openssl
डेनिस अरनॉड

1
मैंने इसके साथ अपना मुद्दा तय किया। धन्यवाद :)
JeongjinKim

1
मैक OSX 10.13.4 पर मुद्दा फिक्स्ड! धन्यवाद।
user1192748

1
धन्यवाद! मेरा मुद्दा भी तय किया। मैक OSX 10.13.4
स्टीवन चर्च

2
यह सुनकर डेरिल को खेद हुआ! यह मेरे लिए मोजावे पर फिर से काम किया, इसलिए मुझे यकीन नहीं है कि क्या हो रहा है।
माइकल विल्सन

25

पाइप 7.1 के साथ आप अपनी आवश्यकताओं की फ़ाइल में निम्नलिखित डाल सकते हैं:

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

बस प्रासंगिक एसएसएल बैकएंड लाइब्रेरी के साथ एनएसएस को बदलें।


1
यह समाधान एक संस्करण को निर्यात करने और पुन: स्थापित करने से बेहतर है क्योंकि इसे आवश्यकताओं में साझा किया जा सकता है। फ़ाइल में और इसे प्रति उपयोगकर्ता दोहराया नहीं जाना चाहिए।
dfarrell07

1
निर्यात मेरे लिए CentOS 7. पर काम नहीं किया। लेकिन वैश्विक विकल्प की स्थापना की। धन्यवाद!
आरोन गुयेन

मुझे आपके समाधान को संयोजित करना था और @Michael Wilson को macOS पर काम करने के लिए। एक क्रिप्टो मुद्दे की तरह दिखता है - कुछ चर्चा यहाँ: github.com/pyca/cryptography/issues/3489
kip2

20

मैक ओएस हाई सिएरा अद्यतन के बाद pycurl को ठीक करने की विधि:

  1. SecureTransport के बजाय OpenSSL का उपयोग करने के लिए कर्ल लाइब्रेरी को पुनर्स्थापित करें

    brew install curl --with-openssl
    
  2. सही बिल्ड-टाइम वातावरण और पथ के साथ pycurl स्थापित करें

    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
मेरे लिए हाई सिएरा (एक वर्चुअन का उपयोग करके) पर काम किया।
djangoat

1
हाँ! इस लेख को भी देखें cscheng.info/2018/01/26/…
somecallitblues

मेरे लिए हाई सिएरा (एक virtualenv का उपयोग करके) पर काम किया लेकिन मुझे --user ध्वज को हटाना पड़ा
user495732 Why Me

आपका बहुत बहुत धन्यवाद!! यह अविश्वसनीय रूप से सहायक था। हाई सिएरा चलाना और उस पर कुछ घंटों का समय बिताना, यह एकमात्र उपाय है जो काम किया :) :)
एलेसेंड्रो

जब मैंने --userऊपर ध्वज का उपयोग किया , तो मुझे मिला:Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
डेरिल स्पिट्जर

19

यह मेरे लिए काम किया:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=nss
easy_install pycurl

इसमें से किसी ने भी मेरे लिए काम नहीं किया (ध्यान दें कि अंतर बस easy_install बनाम पाइप है):

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
easy_installविकल्प केवल एक ही है कि काम किया था। मुझे समझ नहीं आता कि यह इतना जटिल क्यों है। मुझे जरूरत थी export PYCURL_SSL_LIBRARY=openssl। मेरे एक ने संकलित पुस्तकालय के लिए "कोई नहीं / अन्य" की सूचना दी।
CMCDragonkai 15

बस इस समस्या में भाग गया और यह समाधान केवल वही था जो मेरे लिए काम करता था।
बोउडिवजन आस्मान

2
मेरे अनुभव में, पाइप पूरी तरह से पुराने संस्करण को नहीं हटाता है जो ओएस के साथ स्थापित किया गया था (मेरे मामले में Centos7.2)। पिप ने पुराने संस्करण से /usr/lib64/python2.7/site-packages/pycurl.so और अंडे की जानकारी वाली फाइलों को नहीं छुआ। Easy_install दूसरी ओर, साइट-पैकेज में pycurl अंडे रखने के अलावा उन लोगों को मिटा दिया।
सोखती

ऊ, उपरोक्त सभी की कोशिश की और यह काम नहीं किया। मेरे लिए यह तब काम आया जब मेरा मूल त्रुटि संदेश था `` ImportError: pycurl: libcurl लिंक-टाइम ssl बैकएंड (खुलता है) संकलन-समय ssl बैकएंड (कोई नहीं / अन्य) `` `से अलग है
जेम्स मैककोर्मैक

10

मुझे यह समस्या बहुत दिनों से थी। अंत में अन्य उत्तरों की मदद से यहां (मुख्यतः अलेक्जेंडर टाइपकोव के) मुझे एडब्ल्यूएस इलास्टिक बीनस्टॉक के लिए काम करना पड़ा।

मैनुअल इंस्टॉल (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"

महत्वपूर्ण: कृपया ध्यान दें कि आपको यह सुनिश्चित करना है कि आप पायथन और पीआईपी के घुमावदार संस्करण का उपयोग कर रहे हैं, अन्यथा आप इसे पायथन 2.x के लिए संकलित कर सकते हैं और v3.x का उपयोग कर सकते हैं।

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'

मुझे यह समस्या थी क्योंकि मैं इलास्टिक बीनस्टॉक में सेजियो 4 को Django 1.10 के साथ कॉन्फ़िगर करने की कोशिश कर रहा था। अगर आपका मामला ऐसा है, तो मैंने इसके बारे में एक पूरी ब्लॉग पोस्ट लिखी है


ऊ धन्यवाद यह सामान कष्टप्रद हो सकता है, विशेष रूप से क्योंकि ईबी कॉन्फिग फाइलें बहुत चंचल लगती हैं और आपको कभी भी उचित त्रुटियां नहीं देती हैं (समस्याओं को प्रारूपित करने सहित)
इयान

जब मैंने AWS पर pycurl स्थापित किया तो मुझे इस समस्या का हल करने में बहुत मदद मिली: AWS: stackoverflow.com/questions/51019622/…
ग्रेग होल्स्ट

8

मैं CentOS 7 पर हूं। मैंने उपरोक्त सभी की कोशिश की और काम करने के लिए कुछ भी नहीं मिला। यह पता चला है कि मुझे रूट उपयोगकर्ता के रूप में चलाने की आवश्यकता है। इसलिए यदि आपको कोई समस्या हो रही है, तो उपरोक्त समाधानों में से कोई भी एक मूल उपयोगकर्ता के रूप में आज़माएँ। एक उदाहरण के रूप में, यहां मेरे लिए काम किया गया है:

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

बेशक, रूट उपयोगकर्ता के रूप में चलने के बारे में सभी सामान्य अस्वीकरण लागू होते हैं।

नोट: ऊपर दिए गए कोड में [nss | .ssl | ssl | gnutls] का अर्थ है एक को चुनना, और चौकोर कोष्ठक या पाइप को शामिल न करना। जिस व्यक्ति ने मूल प्रश्न पूछा है, उसने ओपनसेल चुना होगा। अपने विशेष मामले में, मैंने nss को चुना। आपका त्रुटि संदेश आपको बताना चाहिए कि कौन सा विकल्प बनाना है।

2019 संपादित करें: sudo pip installमशीन के सिस्टम की पायथन स्थापित करने में समस्या हो सकती है। शायद पायथन आभासी वातावरण में काम करने की कोशिश करें और वहां पैकेज स्थापित करें। अगर वह काम नहीं करता है, तो मेरे जवाब में सुडोकू चाल शायद विचार करने के लिए अंतिम विकल्पों में से एक है।


5

आप यहाँ से tar.gz फ़ाइल डाउनलोड कर सकते हैं । फिर इसे एक फोल्डर में निकालें। आपको वहां सेटअपहोम फ़ाइल मिलेगी। उस साइट पर कमांड चलाएँ, जिसका उल्लेख किया गया है। उदाहरण के लिए:

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

FYI करें: मैंने अपनी खिड़कियों पर pycurl स्थापित करने की कोशिश की, लेकिन मैं नहीं कर सका। लेकिन मेरे लाइनक्स पर किया।


प्रतिक्रिया के लिए धन्यवाद, लेकिन यह केवल मेरे लिए काम कर सकता है अगर Im एक virtualenv और पाइप के माध्यम से स्थापना नहीं कर रहा है
helloworld2013

Windows पर pycurl स्थापित करने के लिए @ साबू इस उत्कृष्ट वेबसाइट पर प्रदान किए गए इंस्टॉलर में से एक का उपयोग करें: lfd.uci.edu/~gohlke/pythonlibs/#pycurl
एडम

4

मैं इसे ओएस एक्स पर चला रहा हूं और उपरोक्त कुछ समाधान काम नहीं कर रहे थे। एडवर्ड नेवेल की टिप्पणी के समान ही PYCURL_SSL_LIBRARYलगता है कि चर को पूरी तरह से नजरअंदाज कर दिया गया था। PycURL इंस्टॉलेशन डॉक के
आगे पढ़ने से निम्न पता चला:

पाइप उस पैकेज को फिर से स्थापित कर सकता है जिसे उसने नए निर्दिष्ट विकल्पों के साथ pycurl को फिर से स्थापित करने के बजाय संकलित किया है

इसलिए, मुझे इसे संकलन करने के लिए मजबूर करना पड़ा:

pip install --compile pycurl

यह कई मामलों पर काम करता है। हालाँकि, मैंने कुछ प्रणालियों में भाग लिया जो चर को अनदेखा करना जारी रखा, इसलिए maharg101 के उत्तर के समान , मैंने स्थापित विकल्पों का सहारा लिया जो कि पाइप के माध्यम से इस तरह सेट किया जा सकता है:

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

जहाँ आप वर्ग कोष्ठक के अंदर तीन विकल्पों में से एक का चयन करते हैं। ध्यान दें कि उपलब्ध विकल्प है sslऔर नहीं openssl । यदि आप निर्दिष्ट करते हैं --with-opensslकि आपको एक त्रुटि मिलेगी। यह भी ध्यान दें कि यदि आप PYCURL_SSL_LIBRARYचर के साथ गड़बड़ कर रहे थे और यह देखने के लिए कि यह अंतिम कमांड क्या होता है, तो यह निश्चित रूप से पकड़ लेगा और यदि मूल्य निर्धारित नहीं है, तो त्रुटि को फेंक देगा।


1
पहले pycurl की स्थापना रद्द करें, और pip install pycurl --global-option="--with-nss"मेरे लिए काम करें। रिकॉर्ड के लिए, मेरे त्रुटि हैImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)
ahyong

धन्यवाद @ahyong वैश्विक विकल्प चाल ने मेरे लिए काम किया, भले ही मैंने टार से स्थापित करते समय कोशिश की थी, यह पाइप के साथ काम किया, लेकिन सेटअप के साथ अजीब नहीं ...
Yondaime008

4

कर्ल की स्थापना

मैंने इस चर्चा से हर सुझाव की कोशिश की लेकिन किसी ने मेरे लिए काम नहीं किया। समाधान के रूप में मैंने कर्ल और कर्लिब को फिर से स्थापित किया है। उसके बाद मैं पर्यावरण के अंदर ssl समर्थन के साथ pycurl स्थापित करने में सक्षम था।

प्रारंभ में:

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

भाग 1. पाइप के साथ अंतर / स्थापना

सबसे पहले मैंने पाइप लाइन का उपयोग करके virtualenv से pycurl को हटा दिया है जैसा कि पिछले उत्तर सुझाया गया था:

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

यहाँ विचार यह है कि पैकेज कैश किया गया था और हम इसे ओपनसेल विकल्प के साथ रीइनस्टॉल करते हैं।

मैंने भी पाइप का उपयोग करके pycurl को फिर से जोड़ने की कोशिश की:

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

.. लेकिन चलाने के बाद भी यही त्रुटि थी:

python
import pycurl
pycurl.version

ImportError: pycurl: libcurl लिंक समय ssl बैकएंड ( GNUTLS ) संकलन समय ssl बैकएंड (से अलग है openssl )

भाग 2. टार से स्थापना

पिछले पद्धति के बाद काम नहीं किया था, मैंने टार से pycurl स्थापित करने का निर्णय लिया है:

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

इसने विश्व स्तर पर पीकुरल स्थापित किया है लेकिन वर्चुअनव्यू के भीतर नहीं। मैंने यह भी जाँच नहीं किया कि यह एसएसएल समर्थन के साथ स्थापित किया गया था या नहीं, लेकिन लगता है कि अभी भी एसएसएल के बिना।

भाग 3. कर्ल और कर्लिब की स्थापना

अंत में मैं समझ गया कि pycurl सामान्य रूप से पर्यावरण में स्थापित नहीं होता है क्योंकि वैश्विक कर्ल और libcurl को गिटरल्स के साथ संकलित किया जाता है।

इसके साथ जांच शुरू करने से पहले:

curl-config --configure

आउटपुट लाइनों में से एक होगा

'

इसे पुनः स्थापित करने के लिए:

सबसे पहले कर्ल निकालें:

sudo apt-get purge curl

कर्ल के लिए आवश्यक किसी भी निर्माण निर्भरता को स्थापित करें

sudo apt-get build-dep curl

नवीनतम प्राप्त करें (20 दिसंबर, 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

स्रोत से एप्लिकेशन बनाने के लिए सामान्य चरण

./configure
./make
 sudo make install

यदि खुलता है तो सही तरीके से स्थापित किया गया है, तो यह स्वतः ही मिल जाएगा। उत्पादन होगा:

कर्ल संस्करण: 7.51.0
होस्ट सेटअप: x86_64-pc-linux-gnu
प्रीफ़िक्स इंस्टॉल करें: / usr / स्थानीय
कंपाइलर: gcc
SSL समर्थन: सक्षम (OpenSSL) ...

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'


3

किसी के लिए समस्या macc Mojave पर PyCharm CE के अंदर समस्या यह है कि मैं कैसे यह vev में काम कर रहा है:

  • निर्दिष्ट संस्करण: 7.43.0.1
  • विकल्प: - स्थापना-विकल्प = - साथ-खुलता है - स्थापना-विकल्प = - खुलता है- dir = / usr / स्थानीय / ऑप्ट / खुलता है

PyCharm प्रोजेक्ट दुभाषिया स्क्रीन शॉट


1
मेरे लिए macOS Mojave पर मुझे ब्रुअर्स रीइंस्टॉल ओपन चलाने की जरूरत है और फिर पाइप इंस्टाल pycurl == 7.43.0.1 - इंस्टॉलेशन-ऑप्शन = - विथ ओप्स्स्ल-इंस्टॉलेशन-ऑप्शन = - ओपन्स्ल-डायर = यूएसआर / लोकल / ऑप्ट /
खुलता है

2

यह मेरे लिए काम किया:

पिप इंस्टॉल - कॉम्पाइल - इंस्टॉलेशन-ऑप्शन = "- विथ-ओपनसेल" pycurl


2

मैंने macOS 10.13 पर यहाँ सब कुछ आजमाया, जिसमें कोई सफलता नहीं मिली। तब मुझे https://gist.github.com/webinista/b4b6a4cf8f158431b2c5134630c2cbfe मिला, जिसने काम किया:

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

यह मेरे लिए काम किया जब एक virtualenv का उपयोग नहीं कर रहा है और एक virtualenv के भीतर।


1

यकीन नहीं है कि अगर यह एक virtualenv में चलने के कारण है, लेकिन CentOS 7 पर ये समाधान मेरे लिए काम नहीं कर रहे थे; संकलित वस्तुओं को अभी भी कैश dir से पकड़ा जा रहा था जब मैं पुनः स्थापित कर रहा था। यदि आप यहां अन्य समाधानों को आज़माने के बाद उसी समस्या में चल रहे हैं, तो निम्न प्रयास करें:

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=[nss|openssl|ssl|gnutls]
pip install pycurl --no-cache-dir

यहाँ पर, CentOS 7 पर यह तब तक काम नहीं कर रहा था जब तक कि मैंने --no-cahe-dirविकल्प नहीं जोड़ा । बस आगे उल्लेख करना चाहते हैं कि यह केवल रूट के तहत चलने में सफल रहा su -जैसा @alfonso ने सुझाव दिया था। करना sudo pip3 ...काफी अच्छा नहीं था। संभवतः पर्यावरण चर को उठाया जाना आवश्यक है।
नागदेव

1

त्रुटि:

ImportError: pycurl: libcurl लिंक-टाइम ssl बैकेंड (खुलता है) संकलन-समय ssl बैकएंड (कोई नहीं / अन्य) से अलग है

यह मेरे लिए काम किया, मैक 10.13, अजगर 3.5, pycurl आयात इस तरह स्थापित करने के बाद काम किया

pip3 uninstall pycurl;

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

इसने मेरे लिए हाई सिएरा पर पाइथन 2.7.10 पर काम किया।
स्काइलर

1

लंबे समय तक इस पर टिके रहने के बाद, मुझे पता चला कि OS X 10.11 El Capitan के बाद से Apple OpenSSL हेडर सहित बंद हो गया। कैसे ठीक करना है?

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

यकीन है कि बात है, यह काम करने के लिए मुझे बहुत समय लगा, मुझे बहुत गुस्सा आना चाहिए। मज़े करो!!
व्हाइटबीयर

1

Amazonlinux पर समान समस्या - हल की गई
मुझे amazonlinux पर आधारित docker की छवि बनाते समय, python3.7 को स्थापित करने और pycurl मॉड्यूल को जोड़ने के दौरान यह समस्या थी। Pycurl को छोड़कर अन्य सभी अजगर मॉड्यूल सही ढंग से स्थापित किए गए थे। इस समस्या से जुड़े थ्रेड्स में प्रस्तावित कई समाधानों की कोशिश करने के बाद मैंने सभी टुकड़ों की स्थापना के लिए निम्नलिखित आदेशों का उपयोग करके अपनी समस्या को हल किया।
yum -y install python3 python3-devel gcc libcurl-devel aws-cli openssl-static.x86_64
तब psycopg2- बाइनरी, अनुरोधों, प्रमाणिकता जैसे अन्य मॉड्यूल स्थापित करें:
pip3 install --user --no-cache-dir -r requirements.txt

और अंत में स्थापित pycurl मॉड्यूल का उपयोग कर:

pip3 install --user --global-option="--with-openssl" --no-cache-dir pycurl
और यहां खुलने वाला वैश्विक विकल्प है। स्टैटिक लाइब्रेरी की स्थापना से ओपन-एसएल- static.x86_64 को दूसरी पाइप लाइन कमांड द्वारा उपयोग किए गए वैश्विक विकल्प का उपयोग करते हुए मेरे मामले में समस्या हल हो गई।


0

अजगर 2.7 के लिए

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

अजगर 3.5 के लिए अगला भी स्थापित करें:

sudo apt-get install python3.5-dev

Pypi https://pypi.python.org/pypi/pycurl/7.43.0#downloads से नवीनतम pycurl-7.43.0.tar.gz (md5) स्रोत डाउनलोड करें और अगला कमांड चलाएँ:

python setup.py --with-openssl install

इसके अलावा आप इसे अजगर पर्यावरण में कर सकते हैं:

(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

मुझे इस समस्या का सामना करना पड़ा और संचित जगताप के जवाब ने मेरे लिए काम किया। मैंने सबसे ज्यादा वोट के जवाब के साथ जवाब देने की कोशिश की लेकिन बात नहीं बनी।

मेरा ओपनस्लेल पुराना वर्जन 1.0.1t है, मुझे लगता है कि ओपनिंग को फिर से इंस्टॉल करना इस समस्या को हल कर सकता है।

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

मैंने नवीनतम ओपनसेल को फिर से बनाया और इस उत्तर की कोशिश की । इसकी जांच करें।

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

इसने मेरे लिए काम किया।

मैं सुझाव देता हूं कि हमें कोशिश के लिए अपने ओपनसेल को पुनः स्थापित करना चाहिए


0

निम्नलिखित पायथन 3.6 के साथ मेरे लिए काम किया

MacOS हाई-सिएरा

sudo pip3 uninstall pycurl
sudo pip3 install --compile --install-option="--with-openssl" pycurl 

सेंटोस 7

sudo pip3 uninstall pycurl
sudo pip3 install --compile --install-option="--with-nss" pycurl

0

यह लिंक त्रुटियों का कारण बनता है और समस्या को ठीक करने के लिए एक स्पष्ट निर्देश देता है।

https://cscheng.info/2018/01/26/installing-pycurl-on-macos-high-sierra.html

मेरे लिए, समस्या तब हुई जब मैंने एल कैप्टन से हाई-सिएरा में अपग्रेड किया।


0

एफडब्ल्यूआईडब्ल्यू, मैं एडब्ल्यूएस इलास्टिक बीनस्टॉक के माध्यम से इसे काम करने में बहुत सारे मुद्दों में भाग गया और अंत में इसे इसके साथ काम करने में सक्षम था:

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

हाल ही में एक Django परियोजना का उन्नयन करते समय मेरे पास समान त्रुटि थी। लेकिन इस बार पर्यावरण चर सेट करने से काम नहीं चला। इसलिए मुझे दोनों पर्यावरण चर सेट करने export PYCURL_SSL_LIBRARY=opensslऔर ध्वज को पास करने की आवश्यकता थी --global-option="with-openssl"

इस पृष्ठ पर मूल उत्तर पोस्ट किया गया था


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

pip install pycurl --global-option="--with-openssl"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.