psycopg2 को स्थापित करने में त्रुटि, लाइब्रेरी -lssl के लिए नहीं मिली


127

मै भागा

sudo pip install psycopg2

और मुझे लगता है कि उत्पादन का एक गुच्छा मिलता है:

cc -DNDEBUG -g -fwrapv -Os .....
.....
cc -DNDEBUG -g -fwrapv -Os .....
.....

और अंत में यह कहता है:

ld: library not found for -lssl

clang: error: linker command failed with exit code 1 (use -v to see invocation)

error: command 'cc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip_build_root/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip-uE3thn-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip_build_root/psycopg2
Storing debug log for failure in /Users/Tyler/Library/Logs/pip.log

Easy_install चल रहा है या इसे स्रोत से करना दोनों ही मुझे अंत में एक ही त्रुटि देते हैं (लाइब्रेरी के बारे में हिस्सा -lssl के लिए नहीं मिला है)।


चल रहा है काढ़ा स्थापित (या उन्नयन) खुलता नीचे उपज देता है

$ brew upgrade openssl
Error: openssl-1.0.1h already installed

क्या कोई मेरी मदद कर सकता है?


जवाबों:


285

किसी के लिए macOS Sierra 10.12 (या बाद में, सबसे अधिक संभावना) पर इसके लिए एक समाधान की तलाश में: मैंने कमांड लाइन स्थापित करके यह तय किया है:

xcode-select --install

उसके बाद pip install psycopg2काम करना चाहिए।

यदि ऐसा नहीं होता है, तो आप ब्रू के खुलने के खिलाफ लिंक करने का भी प्रयास कर सकते हैं:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

Opensl काढ़ा के माध्यम से स्थापित। ध्यान दें कि brew link openssl --forceअब काम नहीं करता है:

$ brew link openssl --force                                                                                 17.5s
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

जैसा कि @macho नीचे इंगित करता है यदि यह अभी भी काम नहीं करता है, तो आपको --no-cacheपाइप के विकल्प का उपयोग करने की आवश्यकता हो सकती है , जैसे

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2

5
वास्तव में, xcode-select --installपर्याप्त हो सकता है, यह प्रदान की गई प्रणाली का उपयोग करना चाहिए ssl। मैं अपनी टिप्पणी ऊपर अपडेट करूंगा।
एसएएस

13
सिस्टम पाइथन के लिए xcode-select इंस्टॉल काफी अच्छा है। लेकिन यह आभासी वातावरण के लिए काम नहीं करता है।
एंड्रयू मार्टिन

3
बस मैकओएस सिएरा 10.12 मिला, बस किया pip install psycopg2और बस वही त्रुटि संदेश प्राप्त हुआ: 'ld: पुस्तकालय नहीं मिला -lssl'। xcode-select --installसमस्या को ठीक किया।
webtweakers

4
xcode-select --installमेरे लिए सिएरा पर मुद्दा तय किया, आभासी वातावरण के लिए भी
डैनरा

5
आपको पाइप के -no-cache विकल्प का उपयोग करने की आवश्यकता हो सकती है। जैसेenv LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2
18:01 बजे

58

मैं OpenSSL काढ़ा ( brew install openssl) से स्थापित किया था

निम्नलिखित ने मेरे लिए काम किया:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
pip install psycopg2

26

दौड़ते समय brew link opensslमुझे निम्नलिखित संदेश मिलता है:

$ brew link openssl
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

इस सलाह के बाद यहाँ pipकमांड का उपयोग करने की आवश्यकता है:

$ pip install -r requirements.txt --global-option=build_ext --global-option="-I/usr/local/opt/openssl/include" --global-option="-L/usr/local/opt/openssl/lib"

10

MacOS कैटालिना 10.15.4 के साथ, केवल एक ही कमान थी जो मेरे लिए काम करती थी:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

मोजावे पर भी काम किया। धन्यवाद!
sb9

आपने मेरा समय बचाया।
सिनोवोबैंग

9

मेरे लिए क्या काम किया गया था, कमांड को ओपनसेल लिंक करने के लिए प्रदान किया गया था,

$ brew link openssl
Warning: Refusing to link macOS-provided software: openssl
If you need to have openssl first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc

For compilers to find openssl you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl/include"

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

$ pip install psycopg2
Collecting psycopg2
  Using cached https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz
Installing collected packages: psycopg2
  Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.8.2

अधिकांश लोग शायद zsh का उपयोग नहीं करते हैं, लेकिन मैं अभी भी इको का निर्यात पाथ = "/ usr / लोकल / ऑप्ट / ओप्सनल / बिन: $ पाथ" ">> ~ / .zshrc चला रहा था और यह समस्या को ठीक करने के लिए पर्याप्त था। LDFLAGS और CPPFLAGS पर्यावरण संस्करण को बदलना
मार्क एक्विनो

9

Mojave पर मैंने इन्हें .bash_profile में जोड़ा है

export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/curl/lib -L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/curl/include -I/user/local/opt/openssl/include"

तब एक अजगर 3.7.4 virtualenv में psycopg 2.8.3 स्थापित करने में सक्षम था।

यह xcode और कमांड लाइन टूल को फिर से इंस्टॉल करने के बाद।

ऊपर दिए गए सभी उत्तरों ने मदद की!


4

यह नए मैकओ संस्करण की समस्या है, जहां पाइप स्थापित नहीं हो सकता है cryptography। स्थापित कमांड को एनवी प्रदान करने के लिए मेरी समस्या क्या है:

brew install openssl
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" <YOUR COMMAND HERE>

आप के <YOUR COMMAND HERE>साथ pip install cryptography, या बदल सकते हैंpip install <SOMETHING THAT REQUIRES cryptography> उदाहरण के लिए ।

इस लेख का श्रेय: macOS सिएरा घातक त्रुटि को ठीक करना: 'Opensl / खुलने का समय।' या 'खुलता है / aes.h' फ़ाइल नहीं मिली


4

फिश का उपयोग करते हुए, होमब्रे के साथ ओपनएसएसएल को स्थापित करने के बाद निम्नलिखित दो कमांड ने मेरे लिए इस मुद्दे को हल किया।

set -gx LDFLAGS "-L/usr/local/opt/openssl/lib"
set -gx CPPFLAGS "-I/usr/local/opt/openssl/include"

brew info opensslअद्यतित जानकारी प्राप्त करने के लिए उपयोग करें ।


1

हाल ही में हाई सिएरा में यह समस्या थी, बस एक वर्चुअलनेव में पायथन 3.7 स्थापित किया।

समाधान psycopg2 के बाद के संस्करण का उपयोग करना है। संस्करण 2.7.7 ने काम किया, जहां 2.7.1 ने नहीं किया।


0

एक ही लेखक से psycopg2स्थापित करने , स्थापित करने के बजाय psycopg2-binary:

pip install psycopg2-binary

इस PyPI पैकेज के बारे में प्रलेखन का यही कहना है:

आप [...] एक स्टैंड-अलोन पैकेज प्राप्त कर सकते हैं, जिसे PyPI से psycopg2- बाइनरी पैकेज स्थापित करके एक कंपाइलर या बाहरी पुस्तकालयों की आवश्यकता नहीं है:

$ pip install psycopg2-binary

बाइनरी पैकेज विकास और परीक्षण के लिए एक व्यावहारिक विकल्प है लेकिन उत्पादन में इसे स्रोतों से निर्मित पैकेज का उपयोग करने की सलाह दी जाती है।


0

मैं Mojave पर इस मुद्दे को कर रहा था। Mojave एक / usr / निर्देशिका को शामिल नहीं करता है, जिसे psycopg2 को स्थापित करने की आवश्यकता है। यह स्पष्ट नहीं था। मुझे यहाँ समाधान मिला: कमांड लाइन से Xcode कैसे अपडेट करें , कौन सा संदर्भ: https://forums.developer.apple.com/thread/104296


कुछ और नोट: मेरे पास Xcode और कमांड लाइन टूल्स थे। Xcode-select --install कमांड से पता चला है कि मैंने पहले से ही उन्हें स्थापित किया था, जैसा कि xcode-select -p और echo $ को किया था? एक 0 लौटाया, जो यह भी दर्शाता था कि वे स्थापित हैं। मैं pyenv और pyenv-virtualenv का उपयोग कर रहा हूं, इसलिए मैंने psycopg2 को एक आभासी वातावरण में स्थापित किया है।
प्रोफिक्स

0

मेरे पास यही त्रुटि थी और मैंने इसे स्थापित करने के बाद इसे हल करने के लिए साइथॉन स्थापित किया


0

कोंडा पर्यावरण से PyCharm चल रहा है, का उपयोग कर मेरे मुद्दे को हल:

--> conda install psycopg2
The following packages will be UPDATED: ...

...
Proceed ([y]/n)? 
--> y
--> pip3 install psycopg2
Installing collected packages: psycopg2
Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.8.4

'''


0

मैंने MacPorts का उपयोग करके ओपनएसएसएल स्थापित किया है इसलिए निर्देशिका ब्रू की तरह नहीं हैं।

sudo port install openssl

मुझे ऐसा करके निर्देशिकाएं मिलीं:

port contents openssl | grep lib
port contents openssl | grep include

तब मैंने चर का निर्यात किया:

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

आपको यह भी करना पड़ सकता है:

xcode-select --install


-4

मैं इसका उपयोग करके इसे ठीक करने में कामयाब रहा:

brew unlink openssl && brew link openssl --force

मुझे यकीन नहीं है कि यह मेरे द्वारा किए गए पूर्व प्रयासों में ओपनएसएसएल पर किए गए ब्रुअ अनइंस्टॉल / अपग्रेड से कैसे अलग है। मेरी धारणा यह है कि इन कार्यों ने कुछ "दोषपूर्ण" साझा पुस्तकालयों को छोड़ दिया जो इसे काम करने से रोक रहे थे। ध्यान दें कि यह भी अजगर क्रिप्टोग्राफी मॉड्यूल स्थापित करने के साथ मुद्दों को तय किया।

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