MacOS 10.15 Beta (19A582a) पर "/usr/lib/libcrypto.dylib" के साथ पायथन दुर्घटनाग्रस्त


47

मैंने अपने मैकगो प्रोजेक्ट को नए macOS कैटालिना के साथ चलाया और ठीक चल रहा था।
मैंने oh_my_zsh स्थापित किया, फिर मैंने उसी प्रोजेक्ट को चलाने की कोशिश की, जो निम्न त्रुटियों के साथ दुर्घटनाग्रस्त हो रहा है। मैंने oh_my_zsh की स्थापना रद्द की और फिर से कोशिश की लेकिन यह काम नहीं किया।

Path:                  /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.4 (3.7.4)
Code Type:             X86-64 (Native)
Parent Process:        Python [7526]
Responsible:           Terminal [7510]
User ID:               501

Date/Time:             2019-10-07 20:59:20.675 +0530
OS Version:            Mac OS X 10.15 (19A582a)
Report Version:        12
Anonymous UUID:        CB7F20F6-96C0-4F63-9EC5-AFF3E0989687


Time Awake Since Boot: 3000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

यदि आप एक virtualenv में हैं: मेरे लिए vev का एक (पूर्ण) रीसेट (इसे हटाने और सभी निर्भरता आदि के साथ इसे फिर से बनाना) काम किया
बस्ती

जवाबों:


94

मैं बस एक ही समस्या में आया और चीजों को मैन्युअल रूप से लिंक करने के लिए थोड़ा असहज महसूस किया।

मैं बस समस्या को हल करने में सक्षम था

  1. Homebrew के माध्यम से खुलने का समय स्थापित करना:
    brew install openssl
  2. DYLD_LIBRARY_PATH के माध्यम से Opensl से गतिशील पुस्तकालयों की ओर इशारा करते हुए:
    export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

मैंने अभी उस लाइन को अपने .zshrc में जोड़ा है।

संपादित करें: इस प्रश्न के अनुसार , का उपयोग DYLD_FALLBACK_LIBRARY_PATHबेहतर हो सकता है DYLD_LIBRARY_PATH

संपादन 2: जैसा कि नीचे टिप्पणी में बताया गया है, यह संभवतः स्वीकृत उत्तर होना चाहिए। बस cryptographyपैकेज को पुनर्स्थापित करें ।


19
सिस्टम को
गड़बड़ाने के

यह मेरे लिए कमांड लाइन में भी काम करता था, हालाँकि यह स्क्रिप्ट के लिए काम नहीं करता था। क्या कुछ छूट सकता है?
अर्नेस्टो

2
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/opt/openssl/libआपके द्वारा वर्णित कार्यों की पुष्टि कर सकता है । पारितोषिक के लिए धन्यवाद!
ल्यूक होर्स्टन

1
यह काम करने के लिए बहुत अच्छा है, लेकिन इसे पूरी तरह से हल नहीं करता है। मेरे पास कुछ क्रेबट नौकरियां हैं जिन्हें पायथन का उपयोग करने की आवश्यकता है और मैं यह सुनिश्चित नहीं करना चाहता कि उन सभी के पास यह एनवी सेटअप है। मुझे नीचे @ आंद्रेई का समाधान पसंद है। यह जो कुछ भी नवीनतम Opensl काम करता है ताकि भविष्य में यह उन्नत है जब लिंक के रूप में अच्छी तरह से हो जाएगा करने के लिए symlinks सेट करता है। stackoverflow.com/a/58596931/142318
क्रिस

1
हर किसी को इस से पहले नीचे दिए गए @tonyStarks जवाब की कोशिश करनी चाहिए, यह सिर्फ एक आसान स्थापना रद्द हो सकती है और आपके लिए पुनः स्थापित हो सकती है
माइकल सी वालेस

38

कैविएट: मैं एक सुरक्षा विशेषज्ञ नहीं हूं, और यह समाधान क्रिप्टो पुस्तकालयों के साथ खिलवाड़ करता है!

मुझे नहीं लगता कि आपका मुद्दा zsh या oh-my-zsh से उपजा है। मेरा सबसे अच्छा अनुमान: MacOS 10.15 के साथ स्थापित कुछ क्रिप्टो लाइब्रेरी होमब्रे के python3इंस्टॉलेशन के साथ असंगत हैं ।

यहाँ क्या मेरे लिए मुद्दा तय हो गया है

# Install openssl via homebrew.
# Note: According to homebrew, "openssl is keg-only, which means it was
# not symlinked into /usr/local, because Apple has deprecated use of
# OpenSSL in favor of its own TLS and crypto libraries."
brew install openssl
# Symlink those versions into /usr/local/lib, which gets Python to dynamically
# link against those instead of the version in /usr/lib/.
# Got the idea from https://forums.developer.apple.com/thread/119429
cd /usr/local/lib
sudo ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libssl.1.0.0.dylib libssl.dylib
sudo ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libcrypto.1.0.0.dylib libcrypto.dylib

संदर्भ के लिए मेरी स्थिति:

  • हाल ही में MacOS 10.15 में अपग्रेड किया गया
  • मैं होमब्रे के माध्यम से स्थापित अजगर / पाइप का उपयोग करता हूं: brew install python
  • pip3 के साथ असफल हो रहा था SIGABRT

सिस्टम त्रुटि रिपोर्ट का शीर्षक:

Process:               Python [52429]
Path:                  /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.4 (3.7.4)
Code Type:             X86-64 (Native)
Parent Process:        zsh [43309]
Responsible:           iTerm2 [2316]
User ID:               501

Date/Time:             2019-10-09 09:52:18.148 -0700
OS Version:            Mac OS X 10.15 (19A583)
Report Version:        12
Bridge OS Version:     4.0 (17P572)
Anonymous UUID:        

Sleep/Wake UUID:       

Time Awake Since Boot: 9900 seconds
Time Since Wake:       7300 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

29

मेरे लिए यह पायथन के क्रिप्टोग्राफी पैकेज को फिर से स्थापित करने के लिए पर्याप्त था।

pip uninstall cryptography
pip install cryptography

1
इसने मेरे लिए काम किया। मेरे मामले में वर्चुअलाइजेशन को वर्चुअलाइन्ज के नवीनतम संस्करण में अपडेट करने के बाद निष्पादित नहीं किया गया था।
hshan

1
इसने काम कर दिया! धन्यवाद! मेरे लिए, इसके pip uninstall cryptographyबजाय यह था remove
fzwo

यह मेरे लिए भी तय है। धन्यवाद!
andrewdcato

यह पूरी तरह से काम किया - धन्यवाद!
शरम 4n

हां, यह चाल चली। धन्यवाद!
स्टीफन फंक

17

मुझे @bixel, @Juro Oravec & @honkaboy उत्तरों का एक संयोजन पसंद है:

brew install openssl
cd /usr/local/lib
sudo ln -s /usr/local/opt/openssl/lib/libssl.dylib libssl.dylib
sudo ln -s /usr/local/opt/openssl/lib/libcrypto.dylib libcrypto.dylib

इस तरह, कम से कम सिद्धांत रूप में, जब अद्यतन खुलता है dylibs हमेशा नवीनतम संस्करणों को इंगित करेगा। /usr/local/opt/opensslवास्तव में एक लिंक है /usr/local/Cellar/openssl/Cellar/openssl/1.0.2t(शराब की भठ्ठी द्वारा स्थापित संस्करण)।

समस्या होने का कारण वास्तव में शराब बनाना है:

ओप्स्ल केग-ही है, जिसका अर्थ है कि इसे / usr / लोकल में सिम्प्लाइ नहीं किया गया था, क्योंकि Apple ने अपने खुद के टीएलएस और क्रिप्टो लाइब्रेरियों के पक्ष में ओपनएसएसएल के उपयोग को हटा दिया है।

चलाने की कोशिश कर रहा है brew link openssl:

चेतावनी: macOS प्रदान किए गए सॉफ़्टवेयर को लिंक करने से इंकार करना: Opensl यदि आपको अपने PATH रन में पहले Opensl की आवश्यकता है: echo 'export PATH = "/ usr / local / opt / opensl / bin: $ PATH"' >> ~ / .bash_profile

कंपाइलर के लिए ओपनसेल खोजने के लिए आपको सेट करने की आवश्यकता हो सकती है: LDFLAGS = "निर्यात करें - L / usr / local / opt / opsl / lib" निर्यात CPPFLAGS = "- I / usr / local / opt / opensl / शामिल करें"

पीएसजी-कॉन्फिगरेशन के लिए ओपनसेल खोजने के लिए आपको सेट करने की आवश्यकता हो सकती है: PKG_CONFIG_PATH = "/ usr / local / opt / opensl / lib / pkgconfig" निर्यात करें

तो, मूल रूप से आपको उन्हें मैन्युअल रूप से लिंक करने की आवश्यकता है।


15

इस Apple देव धागे से r.xuan ने Homebrew के इंस्टॉल से लीबी के लिंक के साथ और लिंक को Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI. बदलकर त्रुटि के लिए वर्कअराउंड के चरणों की पहचान की ।libssl.dyliblibcrypto.dylib/usr/local/libopenssl

कदम हैं:

नए सिरे से काम करवाएं

1) brew update && brew upgrade && brew install openssl

2) cd /usr/local/Cellar/openssl/1.0.2t/lib

3) sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib/

पुराने का बैकअप लें

4) cd /usr/local/lib

5) mv libssl.dylib libssl_bak.dylib

6) mv libcrypto.dylib libcrypto_bak.dylib

नए लिंक बनाएं

7) sudo ln -s libssl.1.0.0.dylib libssl.dylib

8) sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib


यह मेरे लिए कैटालिना 10.15.4 पर काम करता था, लेकिन मेरे पास /usr/local/Cellar/openssl@1.1 था और समकक्ष फाइलों का उपयोग करता था। X.1.0.0.dylib फ़ाइलों का उपयोग करके, pip3 अभी भी दुर्घटनाग्रस्त हो गया।
एंड्रयू डेलोस रेय्स

4

यह क्रिप्टोग्राफी जैसी कुछ निर्भरता का उपयोग होना चाहिए

समाधान:

cd your-site-packages-path/
vim ./asn1crypto/_int.py

इस लाइन को ढूंढो; इसे हटा दें, और सब कुछ ठीक है

# from ._perf._big_num_ctypes import libcrypto

यहाँ मेरी समस्या है

Process:               Python [85179]
Path:                  /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.4 (3.7.4)
Code Type:             X86-64 (Native)
Parent Process:        ??? [85161]
Responsible:           iTerm2 [11711]
User ID:               501

Date/Time:             2019-10-07 23:00:25.143 +0800
OS Version:            Mac OS X 10.15 (19A582a)
Report Version:        12
Bridge OS Version:     3.0 (14Y906)
Anonymous UUID:        32C73ADD-1291-FA0E-DC02-48D539674325


Time Awake Since Boot: 42000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

4

मैं इसी तरह की समस्याओं को देख रहा था ansible। अपराधी था asn1crypto, और समस्या पहले से ही तय हो गई है

मेरा समाधान मैन्युअल रूप से इसे हटाने और इसे फिर से स्थापित करने के लिए था pip :

  1. rm -r /usr/local/lib/python2.7/site-packages/asn1crypto*। यह अनुमति दीpip बिना किसी समस्या के काम करने ।
  2. pip install asn1crypto, जो स्थापित 1.2.0:
  Found existing installation: asn1crypto 0.24.0
    Uninstalling asn1crypto-0.24.0:
      Successfully uninstalled asn1crypto-0.24.0
Successfully installed asn1crypto-1.2.0

नोट : आप जाँच सकते हैं कि asn1cryptoक्या pythonवर्बोज़ मोड में चलकर अपराधी है , उदाहरण के लिए python -v $(which ansible)। मेरे मामले में कुछ asn1cryptoसंबंधित आयात करते समय यह दुर्घटनाग्रस्त हो गया :

# /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.pyc matches /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.py
import asn1crypto._perf._big_num_ctypes # precompiled from /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.pyc
[1]    59247 abort      python -v $(which ansible)

संबंधित: https://github.com/Homebrew/homebrew-core/issues/44996


यह वही है जिसने मेरे लिए काम किया है। मैं जड़ों से ट्रेलिस का उपयोग कर रहा था, जो ansible का उपयोग करता है। मैंने rm -rउत्तर में सूचीबद्ध के रूप में कमांड किया, फिर मैंने trellis/.trellis/virtualenvनिर्देशिका में अपने पायथन पर्यावरण को हटा दिया , फिर ट्रेली-क्ले का उपयोग करके मैंने ऐसा किया trellis initजो एक अजगर पर्यावरण को फिर से बनाया और पाइप के साथ निर्भरता स्थापित किया।
रॉबकॉर्ड

इसने मेरे लिए काम किया :)
smartworld-dm

0

यदि आप DevMate से केवलर का उपयोग कर रहे हैं , तो 4.3.1 में अपग्रेड करें, "libcrypto.dylib के संस्करण के कारण फिक्स्ड macOS कैटालिना क्रैश"।


0

ऐसा लगता है कि यह एक Homebrew मुद्दा था। मैंने किया brew reinstall python3और यह काम किया।



0

ऊपर वर्णित उत्तरों का पालन करने के लिए, libssl.dylib फ़ाइल को लिंक करना चाहते थे लेकिन पाया गया कि नीचे ऐसा कोई स्थान नहीं है:

/usr/local/Cellar/openssl/1.0.2t/lib/

हालाँकि @bixel द्वारा स्वीकार किए गए उत्तर के रूप में फ़ाइल को नीचे स्थान पर पाया गया

/usr/local/opt/openssl/lib

और यह मेरे लिए काम किया।


0

मैं एक ही मुद्दा है जब मैं उपयोग कर रहा था से मुलाकात ctypes.cdllको खोलने के लिए /usr/lib/libcrypto.dylibके साथ Python 3.7। हालाँकि dylibCOULD के साथ खोला जाना चाहिए Python 2.7

मैंने नवीनतम के opensslसाथ स्थापित किया brew install, फिर पर्यावरण चर सेट किया और लिंक बनाया जैसा कि उन्होंने ऊपर सुझाव दिया था, कुछ भी अच्छा नहीं हुआ।

कई घंटों की खुदाई के बाद, मुझे एक समाधान समाधान मिला।

मैंने कुछ निम्नलिखित libcrypto.X.dylibमें पाया /usr,

/usr/lib/libcrypto.dylib
/usr/lib/libcrypto.0.9.7.dylib
/usr/lib/libcrypto.0.9.8.dylib
/usr/lib/libcrypto.35.dylib
/usr/lib/libcrypto.41.dylib
/usr/lib/libcrypto.42.dylib
/usr/lib/libcrypto.44.dylib

/usr/local/opt/openssl/lib/libcrypto.1.1.dylib
/usr/local/opt/openssl/lib/libcrypto.dylib

सबसे पहले, मैंने /usr/libइसके बजाय इसे बदलने के लिए एक का उपयोग किया ।

os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = '/usr/local/opt/openssl/lib'

इसे लोड किया जा सकता था लेकिन कुछ एपिस गायब थे,

AttributeError: dlsym(0x..., ECDH_OpenSSL): symbol not found

मैंने /usr/lib/libcrypto.X.dylibअपने स्क्रिप्ट पथ के लिए एक लिंक बनाया ।

ln -s /usr/lib/libcrypto.X.dylib lib/libcrypto.dylib

फिर पथ जोड़ें DYLD_FALLBACK_LIBRARY_PATH

os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = 'lib' # It should be a absolute path

अंत में, यह काम किया।

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